【问题标题】:How can I let multiple nodes to store one hash map in Redis如何让多个节点在 Redis 中存储一个哈希映射
【发布时间】:2017-11-11 23:58:50
【问题描述】:

在 Redis 的集群模式下,具有特定键的数据是否必须存储在特定节点中,无论它具有什么数据结构(例如 List/Hash)?

例如,我有一个哈希映射:

HMSET website google www.google.com yahoo www.yahoo.com

hash map的key是“website”,hash map有数据{google:www.google.com, yahoo:www.yahoo.com}。据我了解,哈希图只存储在集群的一个节点中。当哈希映射很大时(例如,一个哈希映射中有 400M 键值对),效率将不高。

我的问题是:有没有办法在集群之间自动分配相同键的哈希映射的内容?例如,在节点 0 中存储对 {google:www.google.com},在节点 1 中存储对 {yahoo www.yahoo.com},此时哈希映射的键仍然是“网站”?

【问题讨论】:

  • 不要使用哈希。只需设置将在整个集群中均匀分布的简单字符串值。您将失去轻松迭代键空间的能力。

标签: redis


【解决方案1】:

在 Redis 的集群模式下,具有特定键的数据是否必须存储在特定节点中,无论它具有什么数据结构(例如 List/Hash)?

是的 - 每个键都映射到一个哈希槽,由单个集群实例管理。

我的问题是:有没有办法在集群之间自动分配相同key的hash map的内容?

否 - 数据在关键级别的节点之间分布。给定键的数据结构不能分布在多个分片之间。要分发数据,您必须使用更多键对其进行建模。

正确建模您的需求需要了解您将对分布式“哈希图”执行什么类型的操作及其各自的频率。随意将此信息添加到问题中,或打开一个更关注您的要求的新信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多