缓存与数据库双写一致性问题解决方案

其实如果使用缓存,就会出现缓存和数据库的不一致问题,关键在于我们可以接受不一致的时间是多少,根据不同的需求采取不同的实现方案。

第一种:先更新数据库后更新缓存

做法简单,但是并发写情况下,会出现数据的不一致问题,具体不一致的时间长短取决于过期时间的长短

第二种:先删除缓存后更新数据库

并发读写情况下,如果刚删除了缓存,还未执行DB操作的情况下,读线程已经读取旧数据,更新缓存的值,那么数据库还是会出现不一致的问题,时间同样取决于过期时间长短

第三种:先更新数据库后删除缓存

存在问题1、更新数据库和删除缓存直接,这段时间读到的数据是不一致的。2、如果删除缓存失败,那么也会存在一段时间的不一致,时间同样取决于过期时间的长短

第四种:基于第二种,先删除缓存,再更新数据库,为防止第二种情况的发送,使用保底策略,延迟一段时间,再删除缓存

存在问题:1.如果删除缓存失败,那么也会存在一段时间的不一致,时间同样取决于过期时间的长短

2.多次删除缓存,给redis带来一定的压力

第五种:基于第三种,先更新数据库,再使用本地缓存或者消息队列,异步删除缓存。

相关推荐
高翔·权衡之境1 小时前
缓存一致性——多核系统的默契之约
驱动开发·嵌入式硬件·安全·缓存·系统安全·信息与通信
直奔標竿5 小时前
MySQL与Redis数据一致性实战方案(避坑指南)
java·数据库·spring boot·redis·mysql·spring·缓存
绿豆人6 小时前
Cache缓存项目学习4
windows·学习·缓存
2501_912784087 小时前
TaoCarts 反向海淘系统架构实战:1688代采与高并发缓存设计全解析
缓存·架构·系统架构·跨境电商·taocarts
S1998_1997111609•X8 小时前
超导致䗃系统固件损坏关闭进程函数洪水泛滥污染孪生镜像描述的逻辑串码缓存鸡dark and -blue 仺盀
安全·百度·缓存·哈希算法·量子计算
甄心爱学习8 小时前
【多核平台上的并行运算】缓存映射机制
缓存
江南十四行10 小时前
Python性能优化完全指南——剖析、缓存与C扩展
python·缓存·性能优化
南村群童欺我老无力.10 小时前
鸿蒙PC开发中Hvigor构建系统的缓存与增量编译问题
缓存·华为·harmonyos
庞轩px12 小时前
第二篇:Redis的过期删除与内存淘汰——数据过期了怎么删?内存满了怎么办?
数据库·redis·缓存·内存·lru·内存淘汰·过期删除
老毛肚12 小时前
02-秒杀系统-商品详细页多级缓存实战(上)
缓存