Redis与DB保持数据一致性方案

  1. 为什么redis与db需要一致?
    redis缓存了db封装后的数据,修改db后redis数据也需要更新。

  2. 双删谁?
    redis

  3. 执行哪两次删除
    更新db数据之前删除redis缓存键值对
    更新db后延时再删除一次redis键值对

  4. 为什么需要延时?
    避免其他读线程获取db旧数据,删除缓存在老数据写入redis之前。
    线程A更新db数据后,此时有另一个B线程读取了DB老数据,准备写入redis,A线程的延时删除cache在B之前了。这样导致一个问题就是,即使二次删除cache,B线程也会写入老数据。所以延时的ttl最好大于redis写入时间。

  5. 延时双删是最终一致性还是强一致性?
    最终一致性,高并发场景下还是会有小部分的脏数据被读取。

  6. redis时候存储db什么类型的数据?
    读多写少的场景
    session和购物车信息这种可以

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值