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

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

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

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

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

相关推荐
枫叶丹4几秒前
【Qt开发】Qt窗口(二) -> QToolBar工具栏
开发语言·数据库·c++·qt
l1t6 分钟前
利用DuckDB列表一句SQL输出乘法口诀表
数据库·sql·算法·duckdb
q***996330 分钟前
SQL 中 COUNT 的用法详解
数据库·sql
wind_one130 分钟前
9.基础--SQL--DML-插入
数据库·sql
float_六七31 分钟前
SQL中=与IS的区别:关键用法解析
java·数据库·sql
rit843249931 分钟前
配置Spring框架以连接SQL Server数据库
java·数据库·spring
qq_3660862232 分钟前
sql server中日期类型转字符串几种写法比较
运维·服务器·数据库
l***749437 分钟前
Spring Boot 中使用 @Transactional 注解配置事务管理
数据库·spring boot·sql
nvd1138 分钟前
Pytest 中使用 SQLAlchemy 进行异步数据库测试
数据库·oracle·pytest
2501_941111343 小时前
Python上下文管理器(with语句)的原理与实践
jvm·数据库·python