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_Queue_Cluster Computing - Fatal编程技术网

Redis群集/负载平衡

Redis群集/负载平衡,redis,queue,cluster-computing,Redis,Queue,Cluster Computing,Redis不支持主机复制 在redis教程中,我可以看到一个配置,有6个节点,3个主节点,3个从节点 有谁能告诉我这种配置的目的是什么(从机用于故障转移,3主机的用途是什么?) 我的要求是减少从应用服务器到Redis的连接数量。所以我在寻找一种可以指向多个redis节点的方法,如果我从redis节点1创建一个键,我可以从redis节点2删除该键 有可能吗?首先,如果在中很少工作,您可以更改默认配置 redis-trib.rb 在函数def check\u create\u parameters中

Redis不支持主机复制

在redis教程中,我可以看到一个配置,有6个节点,3个主节点,3个从节点

有谁能告诉我这种配置的目的是什么(从机用于故障转移,3主机的用途是什么?)

我的要求是减少从应用服务器到Redis的连接数量。所以我在寻找一种可以指向多个redis节点的方法,如果我从redis节点1创建一个键,我可以从redis节点2删除该键


有可能吗?

首先,如果在中很少工作,您可以更改默认配置

redis-trib.rb

在函数
def check\u create\u parameters
中。您可以设置一个主副本和一个从副本

此配置用于容错。从属设备也可用于读取(只读)。在这三个主机中,hashslot平均分布,通过负载平衡算法,您可以重新分配实际的密钥。在节点之间分配密钥的可能算法的步骤如下(由我测试,并按预期工作):

  • 找到大师们
  • 获取他们持有的密钥总数
  • 对于每个主节点,存储主机名、端口和密钥数
  • 计算每个主机必须持有的钥匙,以便 要平衡的密钥分布(集群的总密钥/数量) (硕士学位)
  • 查找哪些主节点必须获取或提供密钥以及总数量 他们必须给/拿的钥匙的数量
  • 根据是否将主节点描述为源节点或目标节点 他们分别接收或发送钥匙
  • 开始从源节点迁移到目标节点,首先 hashslots,然后是相关的键并迭代,直到所有 母版拥有相同数量的钥匙
  • 该算法将有助于最小化响应时间。我的意思是:

    三个主控器的响应时间可以最小化。如果您的配置有一个主机,并且此主机持有30000个密钥,则一次获得1000个密钥的响应时间是>从两个主机的配置中获得,每个主机持有15000个密钥

    如果您在master1中创建了一个密钥,那么如果您试图从master2中获取(读取)该密钥,您将得到一个移动错误。因此,解决方案是创建一个智能客户端,将hashslot映射到相应的节点。因此,只有在master2将您的请求重定向到正确的master时,才能从master2删除密钥


    希望对您有所帮助。

    您能为上述内容提供参考吗?请查看: