【发布时间】:2021-11-02 07:26:12
【问题描述】:
我有一个支持大量排序集的 Redis 集群。这些排序的集合以非常高的频率运行;集群中单个节点只能合理支持两组。
例如,如果我有 2 个节点和 3 个集合,我不能容忍将所有 3 个集合分配给由单个节点提供服务的哈希槽。
有什么方法可以合理地确保这些密钥将均匀分布在集群中的节点上?
【问题讨论】:
标签: redis redis-cluster
我有一个支持大量排序集的 Redis 集群。这些排序的集合以非常高的频率运行;集群中单个节点只能合理支持两组。
例如,如果我有 2 个节点和 3 个集合,我不能容忍将所有 3 个集合分配给由单个节点提供服务的哈希槽。
有什么方法可以合理地确保这些密钥将均匀分布在集群中的节点上?
【问题讨论】:
标签: redis redis-cluster
我相信没有办法确保开箱即用。
如果你用谷歌搜索redis hotkeys,你可以找到一些解释问题的文献。通常他们提供的“解决方案”不是使用大集合,但在某些情况下可能不是有效的答案。
Redis 提供了将插槽从一个分片移动到另一个分片的命令。但如果大键分配到同一个槽,问题依然存在。
但也许你可以玩heys-hash-tags。这是redis提供的一个选项,用于确保在同一个slot中分配一些key。您可以使用这种方法来获得相反的结果,确保某些键没有分配在同一个插槽中。
如果键包含{...} 模式,则仅将键名的那部分传递给分配分片的哈希函数。您可以尝试重命名您的键并添加例如bigset:1{1}、bigset:2{2}、bigset:3{3} 并找到一种模式,使每个键分配到不同的插槽。
【讨论】: