Redis集群虽然具备高可用特性,且能实现自动故障恢复,但是如果使用不当,也会存在一些问题,总结如下。
- 集群完整性问题
- 集群带宽问题
- 数据倾斜问题
- 客户端性能问题
- 命令的集群兼容性问题
- Lua和事务问题
1.集群完整性问题
在 Redis 集群的默认配置下,当节点检测到存在至少一个哈希槽未被覆盖,即无可用节点为其提供服务时,会停止接受查询操作。例如,在某些复杂网络环境或硬件故障场景中,若部分节点出现故障或网络分区,导致部分哈希槽失去服务节点,整个集群便会陷入不可用状态。像电商促销活动期间,若因服务器负载过高致使部分节点宕机,进而影响哈希槽覆盖,就可能使整个 Redis 集群无法响应业务请求,严重影响用户购物体验。
然而,在实际应用中,有时我们期望正在运行的集群子集能够持续接受针对仍被覆盖键空间部分的查询。此时,可通过将 cluster-require-full-coverage 选项设置为 no 来实现。这一设置能确保即便集群部分受损,其余正常节点仍可为