如何让多个节点在Redis中存储一个哈希映射?

4
在Redis的集群模式中,无论数据结构是什么(例如List/Hash),具有特定键的数据必须存储在特定节点上吗?
举个例子,我有一个哈希映射:
HMSET website google www.google.com yahoo www.yahoo.com

哈希映射的关键是"website",并且哈希映射具有数据{google:www.google.com, yahoo:www.yahoo.com}。据我理解,哈希映射仅存储在集群的一个节点中。当哈希映射很大时(例如一个哈希映射中有400M个键值对),这样做效率不高。
我的问题是:是否有一种自动将相同键的哈希映射内容分布在整个集群中的方法?例如,当哈希映射的键仍然是"website"时,在节点0中存储键值对{google:www.google.com},在节点1中存储键值对{yahoo:www.yahoo.com}?

不要使用哈希。只需设置简单的字符串值,这些值将均匀分布在整个集群中。这样做会失去轻松迭代键空间的能力。 - mwp
1个回答

3
在Redis的集群模式中,每个键都被映射到一个哈希槽(hash slot),由单个集群实例进行管理。因此,无论数据结构是List还是Hash,特定键的数据片段都必须存储在特定节点上。
但是,不能将同一键的哈希映射内容自动分布在集群中的多个节点上。要分布数据,必须使用更多的键对其进行建模。
正确地建模需求需要了解您对分布式“哈希映射”执行的操作类型及其相应的频率。欢迎将此信息添加到问题中,或者打开一个更专注于您需求的新问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接