2021-10-20 15:06:52
Redis集群是Redis的分布式、容错实现,旨在通过多个节点协作提供数据存储与访问服务,其核心特点与目标如下:
1. 分布式架构与数据分区
Redis集群采用去中心化网状结构,所有节点通过TCP连接直接互通,无中心或代理节点。数据通过哈希槽(共16384个)自动分区,每个节点负责部分槽位,实现数据在多个节点间的均衡分布。这种设计支持线性可扩展性,理论上在1000个节点时仍能保持高效性能,且扩展成本与节点数量呈线性关系。
2. 容错与高可用性
集群通过异步复制机制保障数据冗余,每个主节点(Master)可配置多个从节点(Slave)。当主节点故障时,集群自动将从节点升级为新主节点,维持服务连续性。可用性条件为:绝大多数主节点可达,且每个不可达主节点至少有一个从节点可用。但若多数主节点同时故障,集群将停止服务。
3. 写入安全与性能权衡
集群提供“可接受的写入安全”级别:客户端若与多数节点保持连接,其写入操作会被系统尽量保存,但极端情况下(如网络分区)仍可能丢失少量数据。异步复制虽降低一致性保证,但提升了写入吞吐量,适合对延迟敏感的场景。
4. 功能限制与差异
与单机Redis相比,集群功能存在以下差异:
数据库限制:仅支持默认的0号数据库,不支持SELECT切换数据库。
多键操作限制:因键分散在不同槽位,跨槽的多键操作(如事务、集合的并集/交集)不被支持。
无合并操作:异步复制不涉及数据合并,可能短暂出现主从数据不一致。
5. 适用场景
Redis集群适合需要海量数据存储、高并发读写且能容忍短暂数据不一致的场景,如缓存、会话管理、实时分析等。若需强一致性或复杂多键操作,单机Redis或分片方案可能更合适。