我尝试在集群模式下使用redis-py和redis,但是我不能让它工作,我看到redis-py-cluster工作,但是我更喜欢redis-py,因为我一直在使用它,它是一个推荐的客户端。
ykejflvf1#
根据redis-py文档:redis-py现在支持集群模式,并为Redis集群提供客户端。请注意,redis-py在4.1.0版本中添加了此功能,该版本目前还没有稳定的版本。如果要安装此功能,请使用以下命令:
redis-py
4.1.0
pip install redis==4.1.0-rc1
也许当你阅读这个答案的时候,它是稳定的!所以只需安装而不需要-rc1后缀。您可以按如下方式连接到您的redis-cluster:
-rc1
>>> 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>>>]]
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所支持的。
falq053o3#
您可以在redis集群中使用redis-py,但是由于不同的键被划分到不同的节点,您需要计算(通过crc 16/crc 32散列函数)哪个集群处理哪些键。为了充分利用“集群模式”,你不关心键的位置,你需要实现redis-py-cluster提供的“客户端分区”和“查询路由”。(https://redis.io/topics/partitioning)redis-py-cluster的一个主要缺点是它没有为“管道+事务”中的原子操作提供解决方案
3条答案
按热度按时间ykejflvf1#
根据
redis-py
文档:redis-py现在支持集群模式,并为Redis集群提供客户端。
请注意,
redis-py
在4.1.0
版本中添加了此功能,该版本目前还没有稳定的版本。如果要安装此功能,请使用以下命令:也许当你阅读这个答案的时候,它是稳定的!所以只需安装而不需要
-rc1
后缀。您可以按如下方式连接到您的redis-cluster:
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所支持的。
falq053o3#
您可以在redis集群中使用redis-py,但是由于不同的键被划分到不同的节点,您需要计算(通过crc 16/crc 32散列函数)哪个集群处理哪些键。
为了充分利用“集群模式”,你不关心键的位置,你需要实现redis-py-cluster提供的“客户端分区”和“查询路由”。(https://redis.io/topics/partitioning)
redis-py-cluster的一个主要缺点是它没有为“管道+事务”中的原子操作提供解决方案