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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
快乐非自愿35 分钟前
Redis--SDS字符串与集合的底层实现原理
数据库·redis·缓存
白晨并不是很能熬夜4 小时前
【RPC】第 4 篇:服务发现 — Zookeeper + 缓存容错
java·后端·程序人生·缓存·zookeeper·rpc·服务发现
手握风云-4 小时前
Redis:不只是缓存那么简单(四)
redis·缓存
懂AI的老郑5 小时前
YOLO检测系统性能优化三大核心:并行、队列与缓存
缓存·性能优化
Ares-Wang6 小时前
Flask》》Flask-Caching缓存插件
python·缓存·flask
绿豆人6 小时前
Cache缓存项目学习2
学习·缓存
冷小鱼6 小时前
Valkey 深度剖析:Redis 最佳平替的技术全景
数据库·redis·缓存·valkey
冷小鱼7 小时前
Redis 技术全景解析:从缓存基石到 AI 时代的数据引擎
数据库·redis·缓存
iwS2o90XT7 小时前
仿写一个简化版Redis,理解内存数据库
数据库·redis·缓存
虹科网络安全1 天前
艾体宝新闻|Redis 月度更新速览:2026 年 3 月
数据库·redis·缓存