所有分类
  • 所有分类
  • 未分类

Redis-保证缓存与数据库的一致性-解决方案

简介

本文介绍如何保证Redis缓存与数据库的数据一致性。

问题由来

缓存流程如下:

缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存;又或者是先删除缓存,再更新数据库呢?也就是说如何保证双写一致性呢?

本文不适合秒杀的情况。秒杀一般是如此设计的:把数据库中的库存数据转移到Redis缓存中,所有读写操作(比如:查库存、减库存)都在Redis中进行,然后再通过定时任务把Redis中的用户秒杀的数据同步到数据库中。

方案1:先更新数据库,再更新缓存(不建议)

这套方案,大家是普遍反对的。为什么呢?有如下两点原因。

此内容仅限VIP查看,请先
5

评论2

请先

  1. 方案1:事务中抛出异常,这个是用Redis事务删除缓存?
    chop 2026-02-11 0
    • 是这样的:将Redis删除缓存和写数据库放到一个方法里,用事务注解标注。如果Redis操作失败,直接抛出异常即可,因为写数据库也在这个方法里,那么数据库更新也会被回滚,保证了一致性。
      自学精灵 2026-02-20 0

站点公告

🪐AI课程,已完成更新~🪐
✨首页=> 左侧栏最下方"AI(人工智能)"✨
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录