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 后,在发生故障事件时丢失写操作的概率大大降低,只在某些难以触发的故障模式下才会发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值