python之redis-cluster
来源:互联网 发布:js正则表达式\s 编辑:程序博客网 时间:2024/05/16 03:32
redis有2种部署方式,单点和cluster。
生产中为避免单点故障丢失数据都会部署为cluster,最近有用到python开发涉及到操作redis的操作。简单封装了下,可以在传参的时候确定是连接哪种模式。
需要安装的python插件:
redis-2.10.6 (redis-2.10.3 )
redis-py-cluster-1.3.4
详见代码:
class myRedis(object):
def __init__(self,redis_type=None,**args):
if redis_type == "cluster":
import rediscluster
self.r_conn = rediscluster.StrictRedisCluster(**args)
else:
import redis
self.r_conn = redis.StrictRedis(**args)
def GetValue(self,name):
return self.r_conn.get(name)
def IncrValue(self,name):
return self.r_conn.incr(name)
def SetValue(self,name,value):
self.r_conn.set(name,value)
def GetSetValue(self,name,value):
return self.r_conn.getset(name,value)
if __name__ == '__main__':
#单点
conn_dict={'host':'127.0.0.1', 'port':6379}
redis_type='single'
myredis = myRedis(redis_type,**conn_dict)
print(myredis.SetValue('name','test'))
print(myredis.GetValue('name'))
print(myredis.GetSetValue('name1',0))
print(myredis.GetValue('name'))
#cluster
conn_dict={"startup_nodes":[{'host':'127.0.0.1', 'port':9001},{'host':'127.0.0.1', 'port':9002},{'host':'127.0.0.1', 'port':9003}]}
redis_type='cluster'
myredis = myRedis(redis_type,**conn_dict)
print(myredis.SetValue('name','test'))
print(myredis.GetValue('name'))
print(myredis.GetSetValue('name',0))
print(myredis.GetValue('name'))
1、操作单点的的时候,没有问题。
2、操作cluster模式的时候,报了一个错误:
Traceback (most recent call last):
File "2.py", line 18, in <module>
redis_cluster()
File "2.py", line 10, in redis_cluster
redisconn = rediscluster.RedisCluster(startup_nodes=redis_nodes,decode_responses=True)
File "/home/zt/mypy/soft/py273/lib/python2.7/site-packages/rediscluster/client.py", line 181, in __init__
**kwargs
File "/home/zt/mypy/soft/py273/lib/python2.7/site-packages/rediscluster/connection.py", line 141, in __init__
self.nodes.initialize()
File "/home/zt/mypy/soft/py273/lib/python2.7/site-packages/rediscluster/nodemanager.py", line 194, in initialize
raise RedisClusterException("ERROR sending 'cluster slots' command to redis server: {0}".format(node))
然后在分析nodemanager.py源码,然后发现cluster也导入了redis的进行的连接,自己安装的版本是redis-2.10.3,然后换成了redis-2.10.6,问题就解决了。
redis-2.10.3版本在连接redis有一些问题。所以需要升级。
- python之redis-cluster
- Redis之Redis Cluster原理
- Redis集群搭建之Redis Cluster实践
- redis(9)、redis集群之redis Cluster使用
- redis(9)、redis集群之redis Cluster使用
- 分布式缓存Redis之cluster集群
- redis cluster
- redis cluster
- redis cluster
- redis cluster
- redis cluster
- redis cluster
- redis cluster
- redis cluster
- Redis Cluster
- redis cluster
- redis-cluster
- Redis Cluster
- 致老伙计
- R:创建列表
- 千寻穗C语言学习日记8.24
- 链表编程专题--分组逆序链表
- 【Linux学习笔记】8:文件搜索命令find
- python之redis-cluster
- HDU 1394 Minimum Inversion Number
- 震惊!15岁男孩竟被独自困在大楼里无法逃生!
- Minetest源码分析十:MeshUpdateThread
- 无法安装.msi文件
- 哈希表,找出第一个出现一次的字符
- [ZJOI2006] 书架
- 开发中常见 Oracle和Mysql 语句差异
- ofbiz 新建模块