Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis 雷迪斯:为什么搬到另一位大师那里_Redis_Redis Cluster - Fatal编程技术网

Redis 雷迪斯:为什么搬到另一位大师那里

Redis 雷迪斯:为什么搬到另一位大师那里,redis,redis-cluster,Redis,Redis Cluster,我有一个Redis集群-3个主集群和3个从集群。该集群包含约300个键(foo0-foo300)。我知道每个主节点负责特定的数据子集,并且可以将客户机重定向到正确的节点,并出现移动错误 但是,如果我向master发送请求以获取不存在的键(如klsdkaso,qwerty123),我也会被移动到另一个节点。我很困惑。谁能解释为什么会这样 为了清楚起见,让我们定义两种主节点: 已连接节点:客户端连接到的节点,您正在向该节点发送GET命令 目标节点:给定密钥应位于的节点,即重定向或移动到的节点 因为连

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


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

为了清楚起见,让我们定义两种主节点:

  • 已连接节点:客户端连接到的节点,您正在向该节点发送
    GET
    命令
  • 目标节点:给定密钥应位于的节点,即重定向或移动到的节点
  • 因为连接的节点只有时隙映射信息,即给定的键应该位于目标节点上。但是,它不知道给定的密钥是否存在于目标节点上


    因此,连接的节点必须首先将客户端重定向到目标节点,即使用
    移动的
    错误消息提供目标节点
    上的IP和端口信息。然后,客户端将另一个
    GET
    命令发送到目标节点,以检查给定的密钥是否确实存在。

    为了明确起见,让我们定义两种主节点:

  • 已连接节点:客户端连接到的节点,您正在向该节点发送
    GET
    命令
  • 目标节点:给定密钥应位于的节点,即重定向或移动到的节点
  • 因为连接的节点只有时隙映射信息,即给定的键应该位于目标节点上。但是,它不知道给定的密钥是否存在于目标节点上


    因此,连接的节点必须首先将客户端重定向到目标节点,即使用
    移动的
    错误消息提供目标节点
    上的IP和端口信息。然后,客户端将另一个
    GET
    命令发送到目标节点,以检查给定的密钥是否确实存在。

    通过将其名称(或其部分,也称为标记)散列到插槽来映射一个密钥,无论它是否确实存在。插槽分配给主控器,主控器首先检查密钥的“归属性”(根据当前插槽范围分配),然后才执行任何其他操作。

    密钥,无论其是否实际存在,都通过将其名称(或其部分,也称为标记)散列到插槽来映射。插槽分配给主控器,主控器首先检查钥匙的“归属性”(根据当前插槽范围分配),然后才执行任何其他操作