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

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

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

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

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

相关推荐
java_logo1 小时前
Docker 部署 Milvus:轻松搭建高性能向量数据库平台
数据库·docker·私有化部署·milvus·向量数据库·rag·轩辕镜像
A心有千千结2 小时前
GO 使用 OpenTelemetry 进行编译时插桩,实现零码注入
数据库·golang·可观测性·观测云
GreatVicent2 小时前
腾讯AI产业大会解读:Agent进场,企业基础设施怎么搭
大数据·数据库·人工智能·llm·agent·企业信息化
大模型码小白2 小时前
告别造假数据,直接连数据库查真实时序数据喂给 TimechoAI 大模型
java·数据库·人工智能·microsoft·架构
晚安日记wanna2 小时前
大表 DDL 面试翻车现场Online DDL 为什么还会锁死业务
数据库·面试·架构
IvorySQL2 小时前
PostgreSQL 日报|建库策略致备库静默丢数据(9 月 12 日)
数据库·人工智能·postgresql
这个DBA有点耶2 小时前
当Agent从“写SQL”变成“执行SQL”:数据库安全模型需要重新设计
数据库·aigc·dba
晚安日记wanna2 小时前
MySQL 主从延迟别只答并行复制
数据库·面试·架构
qq_401700413 小时前
Qt QUrl 详解与代码示例
开发语言·数据库·qt
程序员阿鹏4 小时前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存