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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git 基本操作 ⼯作区、暂存区、版本库

创建本地仓库: 创建 Git 本地仓库 要提前说的是,仓库是进行版本控制的⼀个文件目录。我们要想对文件进行版本控制,就必须先创建⼀个仓库出来。 首先touch 一个文件: 初始化仓库: 创建完成后,我们会发现当前…

行列式错题本

《1800》 1 阶数和转置 A是三阶,B是4阶,还有2这个系数 2 怎么啥也不会呀,委屈 行列式的拆分+提取系数 3

uniapp 安装安卓、IOS模拟器并调试

一、安装Android模拟器并调试 1.下载并安装Android Studio。 2.创建简单project。 3.安装模拟器。 完成安卓模拟器的安装。 4.启动模拟器。 5.hbuilderx选择模拟器、运行。 点击刷新按钮后出现模拟器,勾选并运行。 6.调试。 在 HBuilderX 中,项目启…

每天一道leetcode:20.有效的括号(简单;栈的经典题目)

⭐今日份题目 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对…

Nano 33 BLE Sense Rev2学习第一节——环境配置

参考文档见Access Barometric Pressure Sensor Data on Nano 33 BLE Sense | Arduino Documentation 打开Arduino ide安装开发板 选择开发板 连接开发板到电脑,自动识别开发板端口,选择端口

【Java】查看class文件的jdk编译版本的两种方式

一、使用文本编辑工具EditPlus 使用EditPlus打开该class文件,字符集选择16进制(Hex viewer)。 仅看第一行数据,前面8个字节CA FE BA BE是固定的。 之后4个字节00 00 是次版本。 次版本后面的4个字节00 34 就是jdk版本。 jdk版本…

镜头畸变模型及去畸变的原理

1. OpenCV去畸变undistortPoints原理解析 Opencv中镜头畸变包含了径向畸变和切向畸变,本章节主要阐述镜头畸变模型以及去畸变的原理。 1.1 镜头畸变模型 参考opencv文档 https://docs.opencv.org/3.1.0/d4/d94/tutorial_camera_calibration.html,opencv…

基于SpringBoot+MYSQL的医护人员排班系统

基于springboot的医护人员排班系统录像 1、 前言介绍 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了医护人员排班系统的开发全过程。通过分析医护人员排班系统管理的不足,创建了一个计算机管理医护人员…

LSA头部结构简述

LSA(Link State Advertisement)是一种用于路由协议头部结构,用于在网络中传递路由信息。 LSA头部结构包含以下几个字段: 1、LSA类型(LSA Type):指示LSA的类型,不同类型的LSA用于传递…

Rabbitmq消息丢失-消费者消息丢失(二)

说明:消费端在处理消息的过程中出现异常,例如:业务逻辑异常,或者消费者被停机,或者网络断开连接等,以上等情况使消息没有得到正确恰当的处理,也会使消息丢失。 分析:分析就是说明中…

Composer基础使用 SDK包初始化

Composer 的工作原理 我们在使用 Composer 之前我们得了解一下它的实现原理,它主要由三个部分组成:命令行工具、包仓库、代码库: Packagist 它是官方仓库,也就是我们平常说的 Composer 源,它的作用是存储这些包的信息…

参数引入和全局变量引入实现-目标和

LCR 102. 目标和 - 力扣(LeetCode) 分析题意,画出决策树,其他的思路都跟前面讲过的类似: 全局变量引入实现: 全局变量的引入,需要手动处理回溯; class Solution {int ret; //…

从0到1全流程使用 segment-anything

从0到1全流程使用 segment-anything 一、安装 anaconda 一、下载 anaconda 二、以管理员身份运行安装 1、勾选 Just Me 2、统一安装路径(后续 python 等包也安装至此目录) 3、勾选 add to path 然后安装即可。 三、修改 Anaconda 默认路径及默认缓存路径 Anaconda 默认下…

#QT(DEMO)

1.IDE:QTCreator 2.实验:打印"hello wolrd" 3.记录 (1)创建一个新工程: 新建好一个工程存放文件夹(路径不能有中文),然后按下图配置 (2)点击widgets.ui拖入以…

真香定律!我用这种模式重构了第三方登录

分享是最有效的学习方式。 博客:https://blog.ktdaddy.com/ 老猫的设计模式专栏已经偷偷发车了。不甘愿做crud boy?看了好几遍的设计模式还记不住?那就不要刻意记了,跟上老猫的步伐,在一个个有趣的职场故事中领悟设计模…

2023人机交互期末复习

考试题型及分值分布 1、选择题(10题、20分) 2、填空题(10题、20分) 3、判断题(可选、5题、10分) 4、解答题(5~6题、30分) 5、分析计算题(1~2题、20分) 注意&…

PHP+MySQL实现后台管理系统增删改查之够用就好

说明 最近要给博客弄个后台,不想搞得很复杂,有基本的增删改查就够了,到网上找了一圈发现这个不错,很实用,希望可以帮到大家,需要的朋友评论区留下邮箱,我安排发送。 演示效果 项目介绍 本项目…

带使能控制的锂电池充放电解决方案

一、产品概述 TP4594R 是一款集成线性充电管理、同步升压转换、电池电量指示和多种保护功能的单芯片电源管理 SOC,为锂电池的充放电提供完整的单芯片电源解决方案。 TP4594R 内部集成了线性充电管理模块、同步升压放电管理模块、电量检测与 LED 指示模块、保护模块…

关于python函数参数传递

参数传递 在 python 中,类型属于对象,对象有不同类型的区分,变量是没有类型的: 在下面的代码示例重,[1,2,3] 是 List 类型,“qayrup” 是 String 类型,而变量 a 是没有类型,它仅仅…

#WEB前端

1.实验:vscode安装,及HTML常用文本标签 2.IDE:VSCODE 3.记录: (1)网页直接搜索安装vscode (2)打开vscode,在下图分别安装以下插件: Html Css Support …