mysql与redis缓存一致性问题
2026/9/2 12:35:56 网站建设 项目流程

先更新数据库,再删除redis

  1. 没有试探机制,如果redis删除失败,永久不一致
  2. 并发问题:删除redis之前,其他线程读取到旧数据

先删除缓存,再更新数据库

  1. 没有试探机制,如果数据库更新失败,永久不一致
  2. 并发问题:更新数据库之前,其他线程读到db旧数据又写回redis旧数据

延时双删(先更新数据库,再删除redis的优化版本)

  1. 引入试探机制,先删除redis,删除成功表示redis链接可用有效
  2. 更新数据库成功说明数据库连接有效
  3. 延迟删除redis
  4. 能保证最终一致性

先更新数据,再更新redis(不推荐)

  1. 并发情况下会错乱顺序
  2. A先更新db,b后更新db。但是b先更新redis,a后更新redis。最后db是b的,redis却是a的数据

使用分布式锁

  1. 加分布式锁不需要考虑并发问题了,只考虑事务问题
  2. 先更新db,再删除redis
  3. redis失败,则db回滚

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询