1.什么是集群
Redis集群实现了对Redis的水平扩容,可实现并发写操作,启动n个redis节点,将数据分别存储在不同的节点中,每块节点负责不同区域的插槽,所以Redis集群通过分区来提供一定程度的可用性。
Redis集群现采用的是无中心集群配置,注意我们不要单独进入某个节点客户端中操作,命令应添加-c采用集群策略连接,设置数据会自动切换到对应的写主机。
2.什么是Slots(卡槽)
一个Redis集群包含16384个插槽,数据库中的每个键都存在于这16384个插槽的其中一个,计算方式为:key的循环冗余校验值%16384,集群中的每个节点负责管理一部分插槽。如果我们要一次性添加多个key,但是这些key又位于不同的插槽,我们就可以通过{}来定义组的概念,{}中相同的键会放入同一个插槽中。
3.故障恢复
如果某一段主节点挂掉,会有15s的检测时间,15s后其从节点会自动升级为主节点,挂掉的主节点恢复后,会成为从机。
3.1如果所有某一段插槽的主从节点都宕掉,redis服务是否还能继续?
根据配置文件中的cluster require full coverage(集群需要全覆盖)来决定:
-
如果为yes,某一段插槽的主从都挂掉,那么整个集群都会挂掉。
-
如果为no,某一段插槽的主从都挂掉,只是插槽数据全都不能使用,也无法存储。
4.Redis集群的优劣分析
4.1优点
-
实现扩容。
-
分担压力。
4.2缺点
-
不支持lua脚本。
-
迁移成本较高,复杂度大。