美文网首页
库存是先删缓存还是先改db

库存是先删缓存还是先改db

作者: MelodyOf流沙 | 来源:发表于2021-04-06 00:11 被阅读0次

库存是先删缓存还是先改db

先改db再淘汰缓存
  • 缓存失效
  • A读db数据是旧值
  • B改数据并淘汰缓存
  • A写入旧值到缓存中
    此种方案,发生的问题的条件比较苛刻,但也会出现此类问题
先淘汰缓存再改db
  • B淘汰缓存
  • A读取缓存,没值,去读取旧值
  • B修改DB
  • A把旧值写到缓存中
    此种方案,只要有读取事件在B淘汰后修改成功前出现,则会出现严重的脏读问题,需要一直等到缓存失效才会解决问题
延迟双删

对于此问题,我们常用解决方案是延迟双删

  • 先删除缓存
  • 修改db
  • 休眠x ms再淘汰缓存
    休眠x的目的是为了在修改db时,让出现的读事件写缓存的过程执行完.
    为了防止淘汰缓存失败,还需要增加重试机制(mq实现)
    为了增加吞吐量,可以把休眠ms放在协程中实现
    读写分离主从情况下,休眠时间可以延长一点

相关文章

  • 库存是先删缓存还是先改db

    库存是先删缓存还是先改db 先改db再淘汰缓存 缓存失效 A读db数据是旧值 B改数据并淘汰缓存 A写入旧值到缓存...

  • (10)先删缓存,还是先更新DB?(2)

    一、先删缓存,再更新数据库(用得少) 双删三次操作不能保证原子性,所以很少用 1、普通不一致原因: (1)A写,删...

  • 缓存与数据库一致性问题

    问题: 应用中用redis或者memcached等DB缓存方案,当更新数据时,是先更新数据库后失效缓存,还是先失效...

  • 二级缓存在业务中的使用

    1. 导致缓存与数据不一致的几个原因? 异常且无事物;并发读写。 2. 使用缓存时,先改数据库还是先改缓存? (1...

  • MONGODB基操

    增 db.colname.insert() 删 db.colname.remove() 改 db.colname....

  • Flink常见核心概念

    分布式缓存 有时一些数据是通用的,就需要进行共享,可以放在文件、缓存、db中,可以放在文件中,先缓存到hadoop...

  • 数据库-缓存数据一致性问题

    一、问题描述: 当使用DB + cache的架构时,会出现是先更新cache,还是先更新DB的问题。 1.先更新c...

  • 关于秒杀的方案设计思路

    限流(令牌桶) 接口隐藏(防刷) 分布式锁 用,先读缓存库存,没有则读数据库库存,做库存计算<精准>,改缓存库存;...

  • 超卖——⽅案

    1. ⾸先查询redis缓存库存是否充⾜ 2. 先扣库存再落订单数据,可以防⽌订单⽣成了没有库存的超卖问题 3. ...

  • 缓存⼀致性问题2

    先更新数据库,再删除缓存 如果反过来操作,先更新数据库,再删除缓存呢?这个就更明显的问题了,更新数据库成功,如果删...

网友评论

      本文标题:库存是先删缓存还是先改db

      本文链接:https://www.haomeiwen.com/subject/lygjkltx.html