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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
青山木7 小时前
Redis 高可用的最后一公里:Cluster 分片、Gossip 与故障转移全流程
数据库·redis·后端·缓存
952369 小时前
Redis - 基本操作
数据库·redis·spring·缓存
记忆停留w9 小时前
Celery+Redis 分布式异步任务队列工程落地业务逻辑
大数据·人工智能·redis·分布式·缓存·架构·wpf
吴声子夜歌10 小时前
Reids 6.x——缓存的持久化
缓存·reids
程序猿DD10 小时前
国内模型供应商缓存与可用性实测:谁更适合跑 Agent?
人工智能·缓存·agent
草莓熊Lotso11 小时前
【Redis 初阶】 从分布式演进背景到环境搭建全解析
数据库·人工智能·redis·分布式·缓存
AI-好学者11 小时前
Redis高可用与分布式架构
redis·分布式·缓存·架构
九皇叔叔1 天前
RHEL9.8 配置本地镜像仓库
android·java·缓存
智脑API平台1 天前
Codex 国内使用会封号吗?账号安全、中转站和合规边界说明
数据库·redis·缓存
迷途呀1 天前
新闻头条后端:新闻缓存模块
前端·redis·python·缓存·fastapi