首页 > 解决方案 > Redis 可用性和 CAP 定理

问题描述

在 CAP 定理中,Redis 被指定为缺乏可用性(具有分区容错性和一致性)的数据库。

但是有很多地方 Redis 被认为是高可用的键值对存储。

CAP 定理和 DBMS

什么是对的?如果您能提供深入的答案,我将不胜感激。

标签: redisnosqlhigh-availabilitykey-value-storeconsistency

解决方案


我首先要说没有“CA”类别。大多数系统在没有网络分区的情况下都是 CA。

CAP 定理适用于分布式数据存储,并在网络分区 (P) 发生时生效。它说当 (P) 发生时,分布式数据存储必须在一致性 (C) 或可用性 (A) 之间进行选择。

即当 P 发生时,它将是 PA 或 PC。

RDBMS 曾经是 PC,但随着时间的推移,它们也开始支持 PA。

具体到 Redis,高可用性不仅仅是分区容错。Redis 具有 Master Slave 架构,如果 Master 失败,Redis Sentinel 会将 Slave 提升为新的 Master,从而使整个解决方案具有高可用性。由于多种原因(例如内存不足),主服务器可能会失败(或变得不可用),这不一定是由于网络分区。

然后是网络分区(P)的情况,如果(P)发生,那么Redis在少数分区中变得不可用。这就是为什么从 CAP 的角度来看,Redis 是 CP,因为它在少数分区中变得不可用。请注意,它在多数分区中仍然可用。

您可以在此处阅读有关Redis 高可用性的更多信息。有关分区的详细信息,请参阅标题为“分区下的一致性”的段落。

Redis 也被称为最终一致,因为当 (P) 发生时,少数分区仍然可用几秒钟,并且在此期间对少数分区所做的任何写入最终都会被丢弃。


推荐阅读