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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
耳边轻语9991 小时前
Hermes 如何省token-配置
人工智能·缓存
W230357657316 小时前
C++ 高并发线程池实战(二):动态缓存线程池 + 调用者运行拒绝策略完整版实现
开发语言·c++·缓存
roman_日积跬步-终至千里18 小时前
【系统架构师案例题-知识点】数据库与缓存设计
数据库·缓存·系统架构
_Evan_Yao20 小时前
缓存金字塔上的红色闪电:Redis 如何借力 CPU 的 L1/L2/L3 与 TLB 飞驰
java·数据库·redis·后端·缓存
弹简特21 小时前
【Redis】01-认识Redis+分布式系统知识背景介绍
数据库·redis·缓存
他们叫我阿冠21 小时前
SpringAI的基础学习
数据库·redis·缓存
深念Y1 天前
大模型API缓存的底层原理:从显存到网关
缓存·ai·llm·api·硬件·显存·kvcache
赵优秀一一1 天前
Redis 基础、缓存、String/Hash
redis·缓存·哈希算法
字节高级特工1 天前
迈入Redis:持久化
数据库·redis·缓存
人道领域1 天前
【Redis实战篇】初步基于Redis实现的分布式锁---基于黑马点评
java·数据库·redis·分布式·缓存