浅谈延迟双删策略

  • 1、在谈延时双删之前我们先来了解一下一般场景下数据库和redis的同步机制
    在这里插入图片描述

  • 2、上面这种同步机制会有什么问题?
    在我们访问redis时,redis中的数据可能不是热点数据,即此时数据库的更新操作已经完成,但是还没有同步到redis中。

  • 3、解决方案,延时双删
    延时双删方案执行步骤
    1.删除redis
    2.更新数据库
    3.延时500毫秒
    4.删除redis

  • 问题一:为何要延时500毫秒?
    这是为了我们在第二次删除redis之前能完成数据库的更新操作。
    假象一下,如果没有第三步操作时,有很大概率,在两次删除redis操作执行完毕之后,数据库的数据还没有更新,此时若有请求访问数据,便会出现我们一开始提到的那个问题。

  • 问题二: 为何要两次删除redis?
    如果我们没有第二次删除操作,此时有请求访问数据,有可能是访问的之前未做修改的redis数据,删除操作执行后,redis为空,有请求进来时,便会去访问数据库,此时数据库中的数据已是更新后的数据,保证了数据的一致性。
    写在最后:这种方法无法完全保证数据库和redis数据的一致性,只是一种常见的解决方式,更有效的解决方案通常意味着更大的系统开销,需要开发者根据项目情况选择不同的方案。

  • 15
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值