redis-py模块在集群模式下可以和Redis一起工作吗?

mwyxok5s  于 2023-01-25  发布在  Redis
关注(0)|答案(3)|浏览(171)

我尝试在集群模式下使用redis-py和redis,但是我不能让它工作,我看到redis-py-cluster工作,但是我更喜欢redis-py,因为我一直在使用它,它是一个推荐的客户端。

ykejflvf

ykejflvf1#

根据redis-py文档:
redis-py现在支持集群模式,并为Redis集群提供客户端。
请注意,redis-py4.1.0版本中添加了此功能,该版本目前还没有稳定的版本。如果要安装此功能,请使用以下命令:

pip install redis==4.1.0-rc1

也许当你阅读这个答案的时候,它是稳定的!所以只需安装而不需要-rc1后缀。
您可以按如下方式连接到您的redis-cluster:

>>> from redis.cluster import RedisCluster as Redis
>>> rc = Redis(host='localhost', port=6379)
>>> print(rc.get_nodes())
[[host=127.0.0.1,port=6379,name=127.0.0.1:6379,server_type=primary,redis_connection=Redis<ConnectionPool<Connection<host=127.0.0.1,port=6379,db=0>>>], [host=127.0.0.1,port=6378,name=127.0.0.1:6378,server_type=primary,redis_connection=Redis<ConnectionPool<Connection<host=127.0.0.1,port=6378,db=0>>>], [host=127.0.0.1,port=6377,name=127.0.0.1:6377,server_type=replica,redis_connection=Redis<ConnectionPool<Connection<host=127.0.0.1,port=6377,db=0>>>]]
b1zrtrql

b1zrtrql2#

redis-py不支持集群模式。集群有完全不同的体系结构来服务于水平可伸缩性的目的。HA(高可用性)在其设计中不是优先考虑的。因此您不能将一个客户端用于另一个客户端。
redis-py-cluster似乎正在开发/支持中,它是基于redis.py的。您链接的客户端页面不是针对redis集群的。“redis-py-cluster”在redis集群页面中提到(查找“玩集群”):https://redis.io/topics/cluster-tutorial
除了集群之外,Redis还有sentinel支持的设置来提供HA,这也是redis-py所支持的。

falq053o

falq053o3#

您可以在redis集群中使用redis-py,但是由于不同的键被划分到不同的节点,您需要计算(通过crc 16/crc 32散列函数)哪个集群处理哪些键。
为了充分利用“集群模式”,你不关心键的位置,你需要实现redis-py-cluster提供的“客户端分区”和“查询路由”。(https://redis.io/topics/partitioning
redis-py-cluster的一个主要缺点是它没有为“管道+事务”中的原子操作提供解决方案

相关问题