【问题标题】:Does the redis-py module work with Redis in Cluster mode?redis-py 模块是否可以在集群模式下与 Redis 一起使用?
【发布时间】:2017-06-17 13:10:28
【问题描述】:

我正在尝试在集群模式下将 redis-py 与 redis 一起使用,但我无法让它工作。我看到 redis-py-cluster 可以工作,但我喜欢使用 redis-py,因为我一直在使用它,它是 recommended client

【问题讨论】:

    标签: python redis redis-py


    【解决方案1】:

    redis-py 不支持集群模式。集群具有完全不同的架构来服务于水平可扩展性的目的。 HA(高可用性)不是其设计的优先事项。因此,您不能将一个客户端用于另一个客户端。

    redis-py-cluster 似乎有持续的开发/支持,它基于 redis.py。您链接的客户端页面不适用于 redis 集群。 redis集群页面上提到了“redis-py-cluster”(寻找“玩集群”):https://redis.io/topics/cluster-tutorial

    除了集群之外,Redis 还支持设置以提供 HA,redis-py 确实支持。

    【讨论】:

      【解决方案2】:

      你可以在redis集群中使用redis-py,但是由于不同的key被划分到不同的节点,你需要计算(通过crc16/crc32哈希函数)哪个集群处理哪些key。

      为了充分利用“集群模式”,您不关心密钥的位置,您需要实现 redis-py-cluster 提供的“客户端分区”和“查询路由”。 (https://redis.io/topics/partitioning)

      redis-py-cluster 的一大缺点是它没有为“管道+事务”中的原子操作提供解决方案

      【讨论】:

      • 有不同的方法和实现来解决管道+事务的问题。但主要的问题是,在整个管道是原子的或事务性的集群 redis 环境中,现在不可能做出解决方案。您只能在管道内的每个节点上拥有事务/原子,但不能在整个管道内。在 redis 内部不需要进行更多更改即可完全支持此功能。
      【解决方案3】:

      录制到redis-pydocumentation:

      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>>>]]
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-12
        • 2016-08-24
        • 2021-09-16
        • 2019-03-07
        • 2020-01-03
        • 2020-04-06
        • 2016-09-20
        • 1970-01-01
        相关资源
        最近更新 更多