Redis和mysql如何保持数据一致?

1.先更新Mysql,再更新Redis,如果更新Redis失败,可能仍然不一致

  1. 先删除Redis缓存数据,再更新Mysql,再次查询的时候在将数据添加到缓存中,这种方案能解决1方案的问题,但是在高并发

下性能较低,而且仍然会出现数据不一致的问题,比如线程1删除了Redis 缓存数据,正在更新Mysql,此时另外一个查询再查询,那么就会把Mysql中老数据又查到Redis中

3.延时双删,步骤是:先删除Redis缓存数据,再更新Mysql,延迟几百毫秒再删除Redis缓存数据,这样就算在更新Mysq时,有其他线程读了Mysal,把老数据读到了Redis中,那么也会被删除掉,从而把数据保持一致

相关推荐
云和恩墨6 小时前
数据库一体机简史:从ODA到zData X,命名之中的玄机
数据库·vr
万亿少女的梦1686 小时前
基于Python的高考志愿填报辅助系统设计与实现
java·spring boot·python·mysql·vue
万亿少女的梦1686 小时前
基于SpringBoot与Vue的历史博物馆展品展示与游客管理系统设计
spring boot·mysql·vue·系统设计·博物馆管理系统
数据库小学妹6 小时前
KES是什么?国产数据库技术架构、核心能力与选型实战解析
数据库·经验分享·架构·国产数据库·数据库选型·信创数据库
Database_Cool_7 小时前
向量检索加速首选:阿里云 Tair 内置向量能力毫秒级召回
数据库·阿里云
这不小天嘛8 小时前
JAVA八股——redis篇
java·开发语言·redis
强健的石头8 小时前
django文件对象是什么?
数据库·django·sqlite
灯澜忆梦8 小时前
MySQL 完整学习路线
学习·mysql
ClouGence8 小时前
保障公共安全,一线治安机构实时数据应用与实践
数据库·mysql·postgresql
烟漠河洛9 小时前
线上事故复盘:Redis幂等性设计边界没覆盖跨状态请求,订单状态机直接崩了
数据库·redis·缓存