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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
苦藤新鸡1 小时前
35.LRU缓存(最久未访问)问题
算法·链表·缓存
快起来搬砖了2 小时前
【UniApp 实战】封装高性能本地缓存工具类:支持过期自动清理、数据类型自动转换
缓存·uni-app
工业甲酰苯胺2 小时前
C#中的多级缓存架构设计与实现深度解析
缓存·c#·wpf
wWYy.2 小时前
详解redis(9):数据结构set
数据库·redis·缓存
菜鸟小九18 小时前
redis高级(存储能力问题)
数据库·redis·缓存
yuankunliu21 小时前
【redis】4、Redis的过期策略和淘汰策略
数据库·redis·缓存
虹科网络安全21 小时前
艾体宝洞察 | 缓存策略深度解析:从内存缓存到 Redis 分布式缓存
redis·分布式·缓存
optimistic_chen21 小时前
【Redis系列】Redis缓存
linux·数据库·redis·mysql·缓存·火山引擎
大猫子的技术日记1 天前
Redis 快速上手:5 分钟掌握核心能力
数据结构·数据库·redis·缓存·持久化·pub/sub
panzer_maus1 天前
Redis介绍(4)-认识Redis的事务
数据库·redis·缓存