[面试] 如何保证Redis和MySQL数据一致性?

为什么要在Redis存数据

Redis 用来实现应用和数据库之间读操作的缓存层,主要目的是减少数据 库 IO,还可以提升数据的 IO 性能。

因为Redis基于内存, 查询效率比MySQL快很多, 所以有限查询Redis中的数据,如果Redis没有就查询数据库然后同步到Redis
在这里插入图片描述

出现的问题

数据需要同时保存或者发生变化时, 在Redis和MySQL中都要修改, 但是修改总要有个先后顺序,所以会有数据一致性问题.

解决方案

  1. 先跟新数据后更新缓存

  2. 缺点: 如果先更新数据库,再更新缓存,如果缓存更新失败,就会导致数据库和 Redis 中的数 据不一致。

在这里插入图片描述
2. 先删除缓存后更新数据库

  1. 缺点: 极端情况下删除Redis和更新数据库不是原子性操作的, 这个期间有其他线程访问还是有数据不一致的问题

  2. 最终一致性

  3. 基于RocketMQ的可靠性消息通信来实现
    在这里插入图片描述

  4. 使用canal的方式同步MySQL和Redis的数据, 实时监控MySQL的binlog日志把更新后的数据同步到Redis

在这里插入图片描述

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

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

相关文章

作业1-224——P1927 防护伞

思路 遍历一下找到两点间的最远距离&#xff0c;直接公式算结果&#xff0c;控制输出位数 参考代码 #include<iostream> #include<iomanip> #include<cmath> using namespace std; int main() { int n; cin>>n; int x[n],y[n]; do…

071:vue+cesium 实现下雨效果

第071个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中实现下雨效果,这里使用着色器来实现实例特效。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共120行)着色代码实现心得:专栏目标示例效果

94. 递归实现排列型枚举 刷题笔记

思路 依次枚举 每个位置用哪个数字 要求按照字典序最小来输出 而每次搜索下一层时i都是从1开始 也就是说 如果有小的数可以填上 那么该方案会填上这个数字 例如 当n等于3 第一次搜索 1 2 3输出后返回 返回后此时i3 第二个位置填3 1 3 2 输出后返回 此时返回到第一层…

Python环境搭建

安装包百度网盘&#xff1a;百度网盘 请输入提取码 Python 解释器IDLEJupyterPycharmAnaconda Python解释器 Python的解释器是一种可以执行Python代码的软件程序。Python官方提供了多个解释器&#xff0c;包括CPython、Jython、IronPython、PyPy等。其中&#xff0c;CPython是最…

vscode起本地服务

下载这个 插件 Live Server (Five Server) 下载完会出现这个

计算机视觉领域的前景与挑战-数据增强

计算机视觉在利用数据增强的技术强化下能够大规模提高模型的准确率。—Google Brain科学家Ekin Dogus Cubuk 数据增强技术的多样性提高准确性 Google Brain科学家Ekin Dogus Cubuk做了一个有趣的演讲&#xff0c;重点介绍了深度学习中一个有待充分利用的工具——数据增强。虽然…

档案数字化验收流程

档案数字化验收流程通常包括以下步骤&#xff1a; 1. 确定验收标准&#xff1a;制定档案数字化验收标准&#xff0c;明确要求检查的内容、质量要求、验收标准等。 2. 准备验收环境&#xff1a;为档案数字化验收准备合适的环境&#xff0c;包括验收场所、设备、人员等。 3. 准备…

网络安全课程VIP介绍(比同行便宜)

免责声明 本文发布的工具和脚本&#xff0c;仅用作测试和学习研究&#xff0c;禁止用于商业用途&#xff0c;不能保证其合法性&#xff0c;准确性&#xff0c;完整性和有效性&#xff0c;请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利&#xff0c…

[VNCTF2024]-PWN:preinit解析(逆向花指令,绕过strcmp,函数修改,机器码)

查看保护&#xff1a; 查看ida&#xff1a; 这边其实看反汇编没啥大作用&#xff0c;需要自己动调。 但是前面的绕过strcmp还是要看一下的。 解题&#xff1a; 这里是用linux自带的产生随机数的文件urandom来产生一个随机密码&#xff0c;然后让我们输入密码&#xff0c;用st…

AI Agent

目录 一、什么是Agent 二、什么是MetaGPT【多智能体框架介绍】 三、MetaGPT的背景 一、什么是Agent 智能体 LLM观察思考行动记忆 Agent&#xff08;智能体&#xff09; 一个设置了一些目标或任务&#xff0c;可以迭代运行的大型语言模型。这与大型语言模型&#xff08;LLM&am…

Tomcat部署Web服务器及基础功能配置

前言 Tomcat作为一款网站服务器&#xff0c;目前市面上Java程序使用的比较多&#xff0c;作为运维工人&#xff0c;有必要了解一款如何去运行Java环境的网站服务。 目录 一、Java相关介绍 1. Java历史 2. Java跨平台服务 3. Java实现动态网页功能 3.1 servelt 3.2 jsp …

消息队列+更新DB极易引发的DB并发修改bug

背景 我们在生产系统中和其他系统进行交互时一般都会通过消息队列来解耦生产者和消费者&#xff0c;然后通过每个使用方消费消息队列的消息的方式来完成消息的消费&#xff0c;并且一般来说我们消费消息后极有可能会操作DB&#xff0c;不过这种方式如果处理不够仔细&#xff0…