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主从与HAProxy的配置,以便Wordpress具有高可用性。这个配置很好,工作也很完美(我可以在不停机的情况下删除任何服务器进行维护)。这种配置的问题是,只有一台Redis服务器获得所有流量,如果该服务器死亡,其他服务器只是等待,因此在负载非常高的网页中可能会出现问题,添加更多服务器不是解决方案,因为始终只有一台服务器是主服务器 考虑到这一点,我在考虑是否可以使用Redis集群来允许在所有节点上进行读/写操作,但我不确定它是否能在我的设置中起作用 我的设置在大多数

事实上,我正在使用Redis主从与HAProxy的配置,以便Wordpress具有高可用性。这个配置很好,工作也很完美(我可以在不停机的情况下删除任何服务器进行维护)。这种配置的问题是,只有一台Redis服务器获得所有流量,如果该服务器死亡,其他服务器只是等待,因此在负载非常高的网页中可能会出现问题,添加更多服务器不是解决方案,因为始终只有一台服务器是主服务器

考虑到这一点,我在考虑是否可以使用Redis集群来允许在所有节点上进行读/写操作,但我不确定它是否能在我的设置中起作用

我的设置在大多数情况下仅限于三个节点,我在一些地方读到Redis cluster的最小设置是三个节点,但建议使用六个节点。这是合理的,因为这种设置允许有从节点,如果她的主节点死亡,这些节点将成为主节点,然后所有数据都将被保留,但如果数据不关心会发生什么呢?。我的意思是,在我的设置中,数据只是缓存对象,因此如果不存在,只需再次创建它,以便:

  • 数据将丢失(不在乎),其他节点将再次从客户端获取对象,以便在以后的请求中为其提供服务(如刷新数据时发生的情况)
  • 节点将回答数据不存在,并将拒绝缓存,因为对象必须位于另一个死节点上
有人知道吗


谢谢

当主服务器死亡时,Redis集群将进入关闭状态,任何涉及失败实例提供的密钥的命令都将失败

这可能不同于其他一些分布式软件,因为Redis Cluster并不是每台主机都能保存所有数据的程序。实际上,密钥空间是水平分区的,每个密钥只由一个主密钥提供服务

这在以下文件中提到:

密钥空间被分成16384个插槽。。。 单个哈希槽将由单个节点提供服务

用于将密钥映射到哈希槽的基本算法如下:

哈希_插槽=CRC16(键)模块16384


当您设置集群时,您肯定会要求每个节点为一组插槽提供服务,并且每个插槽只能由一个节点提供服务。如果一个节点死亡,您将丢失此节点上的插槽,除非您有一个从机故障切换来为其提供服务,因此任何涉及映射到这些插槽的密钥的命令都将失败。

您好,感谢您的回复,但我已经读过并且知道了。这就是奴隶存在的原因。我问的是,是否可以在活动节点上覆盖死节点上的信息(如果不存在,则创建缓存),或者命令将失败。例如:node1:A-D,node2:E-H,node3:I-L。node2死亡,E和H之间的数据关闭(如预期的那样)。客户端尝试读取F失败,然后再次尝试创建F。F将在另一个活动节点上创建,或者写入命令也将失败,因为假定该命令将在节点2上。不管怎样,我会尝试测试它。