是否可以在Redis群集中配置插槽数?(群集模式已启用)

是否可以在Redis群集中配置插槽数?(群集模式已启用),redis,redis-cluster,Redis,Redis Cluster,根据Redis群集,Redis群集有16384个插槽。我想知道是否有人成功地将Redis群集配置为使用不同数量的插槽 我的问题的背景是:我有一个由集群模式Redis集群支持的应用程序。应用程序向Redis发送许多multi-get操作(使用MGET命令)。在集群模式下,MGET仅支持属于同一插槽的密钥,因此传递到multi-get操作的密钥需要按插槽分组,并且每个涉及的插槽发出一个MGET命令 MGET中涉及的密钥数总是远远少于16384个,最坏的情况是大约2000个密钥,这意味着大多数多get

根据Redis群集,Redis群集有16384个插槽。我想知道是否有人成功地将Redis群集配置为使用不同数量的插槽

我的问题的背景是:我有一个由集群模式Redis集群支持的应用程序。应用程序向Redis发送许多multi-get操作(使用MGET命令)。在集群模式下,MGET仅支持属于同一插槽的密钥,因此传递到multi-get操作的密钥需要按插槽分组,并且每个涉及的插槽发出一个MGET命令

MGET中涉及的密钥数总是远远少于16384个,最坏的情况是大约2000个密钥,这意味着大多数多get操作最终都会有数百个MGET命令,每个命令都有一个密钥

对于同一节点上的插槽,我可以通过管道传输多个MGET来提高性能。但我一直在想,通过配置一个更低的插槽号,是否可以完全避免这个问题

例如,如果插槽数为128,且多获取操作包含1024个键(假设这些键完全均匀地分布在128个插槽上),则最终将得到128个MGET命令,每个命令有8个键


如果我将这些节点分组并通过管道传输,我认为性能将优于使用16384个插槽(1024个完全均匀分布的键将导致1024个MGET命令,每个命令都有一个键)

正如@sazzad所指出的,在Redis中,插槽的数量是硬编码的(请参见
cluster.h:#定义集群\u插槽
)。除了修改和重新编译Redis(我也不建议使用这种未经测试的构建)之外,它不能通过任何方式进行更改


至于问题本身,你是在优化真实的东西,还是只是为了好玩?尽管
MGET
比只
GET
s更有效,但只要您负责地将批处理流水线化,差异通常并不重要。集群明确表示它是Redis的一个子集,因此多键操作的行为不同。另一方面,在集群中压缩更多性能的方法是添加节点并分散负载。

Redis(包括集群模式)是开源的。你可以把代码拉出来,自己做个版本。谢谢你回复我。据我所知,它似乎是硬编码的,无法配置。我希望能够有能力调整参数的性能。理想情况下,最大性能应该通过与MGET请求中的平均密钥数相当的插槽大小来实现。