当前位置:网站首页>MySQL和Redis的双写一致性
MySQL和Redis的双写一致性
2022-07-29 01:58:00 【Meme_xp】
什么是双写一致性问题?
先看看我们redis读取过程:
(1)先读cache,如果数据命中则返回
(2)如果数据未命中则读db
(3)将db中读取出来的数据入缓存
策略1:先更新缓存,再更新数据库
如果跟新缓存成功更新数据库失败,那么就会造成缓存脏数据
策略2:先更新数据库,再更新缓存
高并发会出现这种情况:

线程A跟新数据库,由于网络或者其他原因,这个时候没有来得及跟新缓存的时候,线程跟新了数据库,并且跟新了缓存,但是A 又跟新了缓存。导致我们的线程B跟新丢失
策略3:先删除缓存,再更新数据库
先删除缓存再跟新数据库,这种就是以及缓解了策略2的缓存跟新丢失情况,但是依然可能不一致
A要删除缓存,B去读操作,发现再redis中没有命中,所以B线程要去数据库中读取,并将这个数据写到redis中,然后线程A完成对数据库的跟新,就出现了数据库和redis缓存不一致的情况

如何解决:
只需要在线程A完成数据库跟新后,再删除 一次缓存,这就叫做延迟双删,这里的延迟时间一定要大于我们的业务的读取的时间
策略4:先更新数据库,再删除缓存
当我们A查询数据,正准备写入缓存的时候,线程B更新了数据库,然后执行了删除缓存的操作,然后A才把之前的旧值写入到redis。出现概率很低,因为写操作时间大概率大于读操作时间
解决方法:
延迟双删,但是删除失败怎么办?
那就不断地循环删除了,我们可以将要删除的key放入队列,然后重复尝试删除,直到成功
边栏推荐
- Esbuild Bundler HMR
- 多边形点测试
- 关于高并发,我想聊一聊。
- 开启TLS加密的Proftpd安全FTP服务器安装指南
- Vector similarity evaluation method
- How much is the report development cost in the application system?
- 快速掌握Nodejs安装以及入门
- ES6 语法扩展
- Thermistor temperature calculation formula program
- [mqtt from introduction to improvement series | 09] Wireshark packet capturing and analyzing mqtt messages
猜你喜欢

详解JS的四种异步解决方案:回调函数、Promise、Generator、async/await

Experiment 2: Arduino's tricolor lamp experiment

如何利用 RPA 实现自动化获客?

The financing demand of 129 million yuan was released, and the roadshow of the Dake city project continued to irrigate the "good seedlings" of scientific innovation

进程间通信---对管道的详细讲解(图文案例讲解)

Altium designer outputs Gerber and other production documents

ES6事件绑定(v-on用法)

裂开了,一次连接池参数导致的雪崩问题
![[cloud native and 5g] micro services support 5g core network](/img/c9/4ccacd1e70285c2ceb50c324e5018c.png)
[cloud native and 5g] micro services support 5g core network

ES6详解 快速上手!
随机推荐
Eight practical new functions of es2022
npm install 报错 Error: EPERM: operation not permitted, rename
详解JS的四种异步解决方案:回调函数、Promise、Generator、async/await
手把手教你安装VSCode(附带图解步骤)
矿山开采虚拟现实vr安全培训提升员工警惕性和防护意识
Summarize in the middle of the year | talk to yourself, live in the present, and count every step
详解异步任务:任务的状态及生命周期管理
结合Retrofit 改造OKHttp 缓存
聊聊 Feign 的实现原理
7/28 高斯消元解线性方程组+高斯消元解异或线性方程组 +求组合数ii
6年测试经验,教大家测试~如何把控项目
物联网组件
Talk about 11 tips for interface performance optimization
Waiting queue wait_ queue
关于高并发,我想聊一聊。
How awesome is the architecture of "12306"?
如何快速设计一套支持渲染富文本内容的跨端组件
Thermistor temperature calculation formula program
快速掌握Nodejs安装以及入门
【MQTT从入门到提高系列 | 09】WireShark抓包分析MQTT报文