Redis是AP还是CP
约 489 字大约 2 分钟
2025-09-05
CAP 定理简介
CAP 定理指出,在分布式系统中,当网络分区发生时(即节点间通信中断),系统只能同时满足以下三者中的两个:
- 一致性 (Consistency):所有节点在同一时间读取到相同的数据。
- 可用性 (Availability):系统始终响应读写请求,即使在故障状态下。
- 分区容忍性 (Partition tolerance):系统在分区发生时继续运行。
Redis 的设计目标强调高性能、高可扩展性和高可用性,因此它选择优先保证 A 和 P,而非 C。
Redis 的 AP 特性
保证可用性 (A):
- 当发生网络分区或节点故障时,Redis 仍允许客户端执行读写操作。例如,在主节点不可用时,从节点可以继续处理读请求(尽管数据可能不是最新)。
- 这确保了系统的高可用性,避免因分区导致的服务中断。
牺牲强一致性 (C):
- Redis 保证 最终一致性(Eventual Consistency),而非强一致性。这意味着在数据更新后,不同节点可能在短时间内读取到不一致的数据,但系统最终会通过异步机制达到一致状态。
- 例如,在主从复制中,主节点写入数据后,从节点通过异步复制同步数据,这可能导致延迟(如毫秒级)和临时不一致。
复制机制的影响:
- Redis 默认使用 异步复制(Asynchronous Replication)进行主从数据同步。这提升了性能,但引入了数据延迟和不一致的风险。
- 即使改用同步复制(Synchronous Replication),Redis 也无法保证强一致性。原因包括:
- 故障转移(Failover)过程可能导致数据丢失或不一致。
- 网络延迟或节点故障时,系统优先确保可用性而非即时一致性。