redis更新缓存导致数据一致性问题的解决方案

解决方案一:延时双删

https://zhuanlan.zhihu.com/p/147028497

1、删除缓存

(其他线程此时查询缓存为空,会查询到数据库的旧值,并回填脏数据)

2、更新数据库

3、休眠500ms,等待脏数据回填完成

4、再次删除缓存,清空脏数据

 

解决方案二:内存队列

https://www.jianshu.com/p/5561d7d6dea7

1、操作业务时,直接将其丢进队列,等待异步执行;

2、当出现读请求时,先读缓存,成功则返回;

3、如果缓存不存在,再去判断队列头部是否是同一条记录的更新请求;

4、如果是,为了不打断其操作,将读请求也丢进队列,然后同步等待缓存更新完成;

5、如果不是,说明该更新请求早已完成,直接读数据库并缓存即可,不要入队列。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值