簡體   English   中英

redis-py 模塊是否可以在集群模式下與 Redis 配合使用?

[英]Does the redis-py module work with Redis in Cluster mode?

我試圖在集群模式下將redis-py與 redis 一起使用,但我無法讓它工作。 我看到redis-py-cluster可以工作,但是我更喜歡 redis-py,因為我一直在使用它並且它是推薦的 client

redis-py不支持集群模式。 集群具有完全不同的體系結構,以實現水平可伸縮性的目的。 HA(高可用性)在其設計中不是優先考慮的問題。 因此,您不能將一個客戶端用於另一個客戶端。

redis-py-cluster似乎有持續的開發/支持,它基於redis.py。 您鏈接的客戶端頁面不適用於redis群集。 redis集群頁面上提到了“redis-py-cluster”(查找“正在使用集群”): https//redis.io/topics/cluster-tutorial

除了集群之外,Redis還提供了哨兵支持的設置來提供HA,redis-py確實支持。

您可以在redis集群中使用redis-py,但由於不同的密鑰被分區到不同的節點,您需要計算(通過crc16 / crc32散列函數)哪個集群處理哪些密鑰。

為了充分利用“集群模式”,您不關心密鑰的位置,您需要實現redis-py-cluster提供的“客戶端分區”和“查詢路由”。 https://redis.io/topics/partitioning

redis-py-cluster的一個主要缺點是它沒有為“管道+事務”中的原子操作提供解決方案。

記錄到redis-py文檔

redis-py 現在支持集群模式,並為 Redis Cluster 提供了一個客戶端。

請注意, redis-py在目前沒有穩定版本的4.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>>>]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM