redis - 如何测试redis集群

标签 redis cluster-computing

我有一个包含 3 个主节点的 Redis 集群。 我对数据持久性不感兴趣,因为这是一个缓存解决方案。 我在 Windows 上运行 v3.2。 当我手动停止其中一台服务器以查看是否仍然可以访问数据库时,我收到“CLUSTERDOWN 集群已关闭错误”。 即使要做到这一点,我也必须连接到仍在工作的实例之一。 我不明白这是如何实现高可用性的解决方案。 我希望我错过了一些东西。 有什么想法为什么当其中一个节点关闭时我无法访问集群吗? 谢谢。

集群创建命令:ruby.exe redis-trib.rb create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002

最佳答案

正如您所说,您在 Redis 集群中使用 3 个主节点,因此很明显,如果其中一个节点发生故障,那么您将得到 CLUSTERDOWN 错误。

为了避免此类错误并获得高可用性,最好将从属节点附加到主节点(如官方 Redis 集群教程 here 所示)。

有理由将从属设备连接到您的主控设备以获得更高的可用性。为此,您可以阅读上面的 Redis 集群教程链接中提到的这些行。

There are 16384 hash slots in Redis Cluster, and to compute what is the hash slot of a given key, we simply take the CRC16 of the key modulo 16384.

Every node in a Redis Cluster is responsible for a subset of the hash slots, so for example you have a cluster with 3 nodes, where:

1) Node A contains hash slots from 0 to 5500.

2) Node B contains hash slots from 5501 to 11000.

3) Node C contains hash slots from 11001 to 16383.

因此,每当您在 Redis 集群中SET 一个键时,它都会计算该键的哈希槽值,并将键相应地保存在一个节点中。 这就是 Redis 集群中所有节点(至少是主节点或其一个从节点)必须处于事件状态的原因。

休息一下,如果您将每个主节点至少附加 1 个从属节点到 Redis 集群中,您将获得更好的 Redis 集群可用性。将从属节点与主节点连接后,您可以通过手动关闭任何主节点来测试您的设置是否具有更高的可用性。

关于redis - 如何测试redis集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45806296/

相关文章:

node.js - Sails connect-redis 适配器

php - 对于数千个页面的最快 PHP 网页缓存的建议?

cluster-computing - 在 SGE 上使用多个通配符提交作业的 snakemake 问题

cluster-computing - SunGridEngine、Condor、Torque 作为 PVM 的资源管理器

jakarta-ee - 集群 Java EE Web 应用程序 - 选项?

java - 在生产环境中运行 Tomcat

node.js - 在Lua中将Redis数据转换为json

python - Django Redis错误未知命令 'BZPOPMIN'

Redis:是否可以按其他键值对具有相同分数的有序集合结果进行排序

java - 如何将 Camel Quartz 集群与队列消费结合使用?