Redis是AP的还是CP的?

redis是一个开源的内存数据库,那么他到底是AP的还是CP的呢?

有人说:单机的是redis是cp的,而集群的redis是ap的?

但是我不这么认为,我觉得redis就是ap的,虽然在单机redis中,因为只有一个实例,他的一致性是有保障的,而一旦这个节点挂了,那么就没有可用性可言了。这么看上去好像是一个cp系统。

但是cap是分布式场景中的理论,如果单机redis,那就没啥分布式可言了。

p都没有了,还谈什么ap,cp呢?

那么,我们来说说,为啥redis是ap的呢?

redis的设计目的是高性能,高可扩展性和高可用性,redis的一致性模型是最终一致性,就是说在某个时间点读取的数据可能并不是最新的,但是最终会达到一致的状态。

redis没有办法保证一致性的主要原因是,因为它的分布式设计中采用的是**异步复制,**这导致在节点之间存在数据同步延迟和不一致的可能性。

也就是说,当某个节点上的数据发生改变时,redis会将这个修改操作发送给其他节点进行同步但由于网络传输的延迟等原因,这些操作不一定会立即被其他节点接收到和执行,这就可能导致节点之间存在数据不一致的情况。

除此之外,redis的一致性还受到了节点故障的影响。当一个节点宕机时,这个节点上的数据可能无法同步到其他节点,这就可能导致数据在节点之间的不一致。虽然redis通过复制和哨兵等机制可以提高系统的可用性和容错性,但是这些机制并不能完全解决数据一致性问题。

如果是同步复制的方式呢?

会不会就是cp了? 这个疑问有明确的回答 体现在redis的官网上

也就是说。客户端可以使用WAIT命令请求对特定数据进行同步复制。然而,WAIT仅能确保数据在Redis实例中有指定数据和副本中确认,它并不能将一组redis实例转变为具有强一致性的cp系统:在故障转移期间,已确认的写操作仍然可能会丢失,这取决于redis持久化的具体配置。然而,使用wait后,在发生故障事件时丢失写操作的概率大大降低,只在某些难以的故障模式下会发生。

相关推荐
lusklusklusk2 分钟前
SQL Server 为什么普通 SELECT 会阻塞 UPDATE?——行级 S 锁到表级 S 锁的锁升级原理与实验验证
数据库·mysql·oracle
Leo.yuan9 分钟前
企业业务人员如何独立完成数据分析?2026年自助BI工具选型与应用指南
大数据·数据库·人工智能
roman_日积跬步-终至千里11 分钟前
数仓开发的三层责任:业务定义、模型设计与 SQL 实现
数据库·数据仓库·sql·数据建模
瀚高PG实验室13 分钟前
瀚高数据库创建新数据库卡住问题排查
数据库·postgresql·瀚高数据库
瑶总迷弟31 分钟前
银河麒麟 V10 ARM64 安装 Oracle 19c 静默部署操作手册
数据库·oracle
飞浪纪元[FWC–FE]1 小时前
Qt 工程创建与 CMake / qmake 构建规范
开发语言·数据库·qt
Ivanqhz1 小时前
MoE + LLM 应用
数据库·人工智能·pytorch·python·深度学习·算法·1024程序员节
我不会起名字3221 小时前
Redis pipeline 用了反而更慢:3 类误用与正确的批量姿势
redis·pipeline·lua·rtt·批量
Tsuki_tl1 小时前
【总结】Redis五大数据类型应用场景及基本命令
数据库·redis·后端·缓存·缓存中间件·redis命令·redis 五大数据类型
Gauss松鼠会1 小时前
GaussDB 整体架构解析
运维·服务器·网络·数据库·sql·架构·gaussdb