gpt4 book ai didi

c# - ServiceStack.Redis - 哨兵模式是否支持分片?

转载 作者:IT王子 更新时间:2023-10-29 06:05:01 26 4
gpt4 key购买 nike

我想实现以下高可用性设置:

  • 2 个主节点(作为一个逻辑数据集的分片与客户端 key 散列)
  • 2 个奴隶(每个主人一个)
  • 6 个哨兵(每对主/从 3 个)

现在,我知道 ServiceStack.Redis 提供了通过哨兵连接到 redis 的 api:

new RedisSentinel(sentinelHosts, masterName: "mymaster").Start().

我还熟悉一个计算哈希键并返回相应连接池的ShardedRedisClientManager

但我如何将它们组合在一起,以便我的输入将是一个哨兵列表(在初始化时)和一个用于请求实际数据的键?哨兵模式是否内置了对分片的支持?

最佳答案

我会为 future 的谷歌员工回答我自己的问题。我们发现在 ServiceStack 中仅部分支持分片并最终得到以下代码:

  1. new
    ConsistentHash<RedisSentinelClientManagerWrapper>(clientManagers);

    • 其中 RedisSentinelClientManagerWrapper 是我们自己的类,它包含哨兵客户端管理器实例并实现 GetHashCode()
    • clientManagers 是所有这些的列表sentinel manager wrappers(根据要求我们只有 2 个)。
  2. 当应用程序启动时,我们初始化所有客户端管理器并创建ConsistentHash 的单个实例

  3. 当我们需要获取/设置一些redis 中的数据,我们在此从一致的哈希中检索 redis 客户端方式:

       var clientManager = consistentHash.GetTarget(key).ClientsManager;
    var client = clientManager.GetClient();

关于c# - ServiceStack.Redis - 哨兵模式是否支持分片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50107173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com