python 操作redis集群
一、连接redis集群
python的redis库是不支持集群操作的,推荐库:redis-py-cluster,一直在维护。还有一个rediscluster库,看GitHub上已经很久没更新了。
安装
pip3 install redis-py-cluster
连接redis集群
#!/usr/bin/env python
# coding: utf-8 from rediscluster import StrictRedisCluster class RedisCluster(object): # 连接redis集群
def __init__(self,conn_list):
self.conn_list = conn_list # 连接列表 def connect(self):
"""
连接redis集群
:return: object
"""
try:
# 非密码连接redis集群
# redisconn = StrictRedisCluster(startup_nodes=self.conn_list)
# 使用密码连接redis集群
redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password='')
return redisconn
except Exception as e:
print(e)
print("错误,连接redis 集群失败")
return False redis_basis_conn = [{'host': '192.168.10.168', 'port': 7201}, {'host': '192.168.10.169', 'port': 7201}, {'host': '192.168.10.170', 'port': 7201}, {'host': '192.168.10.171', 'port': 7201}, {'host': '192.168.10.142', 'port': 7201}, {'host': '192.168.10.143', 'port': 7201}] res = RedisCluster(redis_basis_conn).connect()
if not res:
print("连接redis集群失败")
else:
print("连接redis集群成功")
执行输出:
连接redis集群成功
二、操作redis集群
查看节点状态
#!/usr/bin/env python
# coding: utf-8 from rediscluster import StrictRedisCluster class RedisCluster(object): # 连接redis集群
def __init__(self,conn_list):
self.conn_list = conn_list # 连接列表 def connect(self):
"""
连接redis集群
:return: object
"""
try:
# 非密码连接redis集群
# redisconn = StrictRedisCluster(startup_nodes=self.conn_list)
# 使用密码连接redis集群
redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password='')
return redisconn
except Exception as e:
print(e)
print("错误,连接redis 集群失败")
return False def get_state(self):
"""
获取状态
:return:
"""
res = RedisCluster(self.conn_list).connect()
# print("连接集群对象",res,type(res),res.__dict__)
if not res:
return False dic = res.cluster_info() # 查看info信息, 返回dict for i in dic: # 遍历dict
ip = i.split(":")[0]
if dic[i].get('cluster_state'): # 获取状态
print("节点状态, ip: ", ip, "value: ", dic[i].get('cluster_state')) redis_basis_conn = [{'host': '192.168.10.168', 'port': 7201}, {'host': '192.168.10.169', 'port': 7201}, {'host': '192.168.10.170', 'port': 7201}, {'host': '192.168.10.171', 'port': 7201}, {'host': '192.168.10.142', 'port': 7201}, {'host': '192.168.10.143', 'port': 7201}] RedisCluster(redis_basis_conn).get_state()
执行输出:
节点状态, ip: 192.168.10.171 value: ok
节点状态, ip: 192.168.10.169 value: ok
节点状态, ip: 192.168.10.143 value: ok
节点状态, ip: 192.168.10.142 value: ok
节点状态, ip: 192.168.10.170 value: ok
节点状态, ip: 192.168.10.168 value: ok
查看aof是否开启
#!/usr/bin/env python
# coding: utf-8 from rediscluster import StrictRedisCluster class RedisCluster(object): # 连接redis集群
def __init__(self,conn_list):
self.conn_list = conn_list # 连接列表 def connect(self):
"""
连接redis集群
:return: object
"""
try:
# 非密码连接redis集群
# redisconn = StrictRedisCluster(startup_nodes=self.conn_list)
# 使用密码连接redis集群
redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password='')
return redisconn
except Exception as e:
print(e)
print("错误,连接redis 集群失败")
return False def get_info(self):
"""
获取redis集群info信息
:return: dict
"""
res = RedisCluster(self.conn_list).connect()
# print("连接集群对象",res,type(res),res.__dict__)
if not res:
return False dic = res.cluster_info() # 查看info信息, 返回dict
if not dic:
return False return dic def get_state(self):
"""
获取状态
:return:
"""
dic = self.get_info() # type:dict
if not dic:
return dic for i in dic: # 遍历dict
ip = i.split(":")[0]
if dic[i].get('cluster_state'): # 获取状态
print("节点状态, ip: ", ip, "value: ", dic[i].get('cluster_state')) def get_has_aof(self):
"""
查看aof是否打开
:return:
"""
res = RedisCluster(self.conn_list).connect()
# print("连接集群对象",res,type(res),res.__dict__)
if not res:
return False dic = res.config_get('appendonly') # 从config配置项中查询appendonly for i in dic:
ip = i.split(":")[0]
# print(dic[i])
if dic[i].get('appendonly'):
print("aof开关, ip: ", ip,"value: ",dic[i].get('appendonly')) redis_basis_conn = [{'host': '192.168.10.168', 'port': 7201}, {'host': '192.168.10.169', 'port': 7201}, {'host': '192.168.10.170', 'port': 7201}, {'host': '192.168.10.171', 'port': 7201}, {'host': '192.168.10.142', 'port': 7201}, {'host': '192.168.10.143', 'port': 7201}] RedisCluster(redis_basis_conn).get_has_aof()
执行输出:
aof开关, ip: 192.168.10.170 value: no
aof开关, ip: 192.168.10.168 value: no
aof开关, ip: 192.168.10.142 value: no
aof开关, ip: 192.168.10.171 value: no
aof开关, ip: 192.168.10.169 value: no
aof开关, ip: 192.168.10.143 value: no
set和get
#!/usr/bin/env python
# coding: utf-8 from rediscluster import StrictRedisCluster class RedisCluster(object): # 连接redis集群
def __init__(self,conn_list):
self.conn_list = conn_list # 连接列表 def connect(self):
"""
连接redis集群
:return: object
"""
try:
# 非密码连接redis集群
# redisconn = StrictRedisCluster(startup_nodes=self.conn_list)
# 使用密码连接redis集群
redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password='')
return redisconn
except Exception as e:
print(e)
print("错误,连接redis 集群失败")
return False # 连接列表,注意:必须严格按照此格式来!
redis_basis_conn = [{'host': '192.168.10.168', 'port': 7201}, {'host': '192.168.10.169', 'port': 7201}, {'host': '192.168.10.170', 'port': 7201}, {'host': '192.168.10.171', 'port': 7201}, {'host': '192.168.10.142', 'port': 7201}, {'host': '192.168.10.143', 'port': 7201}] redis_conn = RedisCluster(redis_basis_conn).connect() # redis连接对象
redis_conn.set('name','admin') # 插入一个值
print("name is: ", redis_conn.get('name')) # 查询值
执行输出:
name is: b'admin'
注意:get出来的值,是bytes类型的。
其他redis操作,比如hget,hgetall... 和redis单例模式,是一样的。
这里就不一一演示了
python 操作redis集群的更多相关文章
- python操作redis集群
strictRedis对象方法用于连接redis 指定主机地址,port与服务器连接,默认db是0,redis默认数据库有16个,在配置文件中指定database 16 上代码 .对redis的单实例 ...
- 15.9,python操作redis集群
上代码 .对redis的单实例进行连接操作 python3 >>>import redis >>>r = redis.StrictRedis(host=, db ...
- java操作redis集群配置[可配置密码]和工具类(比较好用)
转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>red ...
- java操作redis集群配置[可配置密码]和工具类
java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>redis.clients</groupId> & ...
- php操作redis集群哨兵模式
前段时间项目里正好用到了redis的集群哨兵部署,因为此前并无了解过,所以一脸懵逼啊,查阅了几篇资料,特此综合总结一下,作为记录. 写在前沿:随着项目的扩张,对redis的依赖也越来越大,为了增强re ...
- Java操作 Redis 集群
// 连接redis集群 @Test public void testJedisCluster() { JedisPoolConfig config = new JedisPoolConfig(); ...
- JedisCluster操作redis集群
1.pom引入依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...
- python 搭建redis集群
所需依赖 redis.io/download">redis-3.0.7ruby-1.8.7:sudo apt-get install rubyrubygems:sudo apt-get ...
- JedisCluster操作redis集群demo
package com.chenk; import java.util.HashMap; import java.util.HashSet; import java.util.List; import ...
随机推荐
- 如何防范web前端安全攻击
一.对于XSS防御: 1.不要信任任何外部传入的数据,针对用户输入作相关的格式检查.过滤等操作,以及转义字符处理.最普遍的做法就是转义输入输出的内容,对于括号,尖括号,斜杠进行转义 function ...
- 【整理】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
[整理]Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得 iOS模拟器简介 iOS功能简介 iOS模拟器,是在Mac下面开发程序时,开发iOS平台的程序时候,可以使用的辅助工具 ...
- FusionInsight,一个融合的大数据平台
随着物联网技术和应用的普及,以运营商.互联网以及实体经济行业为代表的企业产生了越来越多的数据,大数据的发展越来越蓬勃. 从2007年开始,大数据应用成为很多企业的需求,2012年兴起并产生了大数据平台 ...
- if, if/else, if /elif/else,case
一.if语句用法 if expression then command fi 例子:使用整数比较运算符 read -p "please input a integer:" a if ...
- solr 使用
Solr安装 1:安装 Tomcat,解压缩即可. 2:解压 solr. 3:把 solr 下的dist目录solr-4.10.3.war部署到 Tomcat\webapps下(去掉版本号). 4:启 ...
- js十大排序算法收藏
十大经典算法排序总结对比 转载自五分钟学算法&https://www.cnblogs.com/AlbertP/p/10847627.html 一张图概括: 主流排序算法概览 名词解释: n: ...
- 安装mininet 一直显示 ‘Cloning into openflow'
问题描述. 安装mininet卡在了下载openflow. git clone --branch 2.2.2 git@github.com:mininet/mininet.git ,然后输入命令./i ...
- 《The Boost C++ Libraries》 第一章 智能指针
Boost.SmartPointers中提供了多种智能指针,它们采用在智能指针析构时释放内存的方式,帮助管理动态分配的对象.由于析构函数在智能指针生命周期结束时被执行,所以由它管理的动态分配对象可以保 ...
- springcloud添加自定义的endpoint来实现平滑发布
在我之前的文章 springcloud如何实现服务的平滑发布 里介绍了基于pause的发布方案. 平滑发布的核心思想就是:所有服务的调用者不再调用该服务了就表示安全的将服务kill掉. 另外actu ...
- Python3基础 list clear 清空列表中的内容
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...