Redis:为什么移动到另一个主机

标签 redis redis-cluster

我有一个 Redis 集群 - 3 个主节点和 3 个从节点。该集群包含约 300 个 key (foo0 - foo300)。我知道每个 master 负责特定的数据子集,并且可以将客户端重定向到正确的节点并出现 MOVED 错误。

但是,如果我向 master 发送请求以获取 不存在的 key (如 klsdkasoqwerty123 ...),我也会被移动到另一个节点。我很困惑。谁能解释为什么会这样?

最佳答案

为了说的清楚,我们定义两种主节点:

  1. Connected Node:您的客户端连接到的节点,您正在向该节点发送 GET 命令。
  2. 目标节点:给定键应该所在的节点,即您被重定向或移动到的节点。

因为 Connected Node 只有槽映射信息,即给定的键应该位于Destination Node。但是,它知道目标节点上是否存在给定 key 。

因此Connected Node 必须首先将客户端重定向到Destination Node,即使用MOVED 错误消息来提供IP 和目标节点上的端口信息。然后客户端发送另一个 GET 命令到 Destination Node 以检查给定的 key 是否真的存在。

关于Redis:为什么移动到另一个主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48925602/

相关文章:

ruby-on-rails - Rails 3.1 发布消息哪个框架最好

spring - Redis 中的并发用于分布式系统中的闪购

locking - 更新 Redis 键/值时获取锁

redis - 如何在网络上通过 ip 集群 redis

ruby - 使用redis存储结构化事件日志

php - Redis存储数据过期未设置过期时间

Redis 4 systemd Sentinel 配置文件不可写

redis - 使用 spring-data-redis 1.7.0.M1 时如何配置 redis-cluster

redis - 使用 redis-trib.rb 创建集群时出现连接错误?

redis - 如何为redis5.0.5集群设置最大内存