栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

为什么要延迟双删,来保证缓存一致性

Java 更新时间:发布时间: 百科书网 趣学号
为什么要延迟双删,来保证缓存一致性
  1. 在删除数据库数据前,需要先删除一次redis:此时是为了保证在数据库数据删除和redis数据被删除的间隔时间内,如有命中,保证此数据也不存在redis中。如果没有这一次删除,当数据库数据已经被删除了,但是还是可以从redis中读出数据,导致数据不一致。
  2. 第二次删除则是在删除数据库数据后,此时需要再次删除redis中对应数据一次,这一次是为了删除 第一次redis删除和数据库数据删除之间,如果有请求,那么数据又会重新缓存到redis中,然而数据在数据库中在接下来就会被删掉,如果没有这一次删除,redis中则会存在数据库中不存在的数据。
  3. 那么第二次为什么需要在数据库删除后延迟一定时间再删除redis呢?
    a. 主要是为了等待数据的真正同步,因为主从,会有一定的延迟,代码中发出了删除数据的指令,但是当所有数据库集群中对应数据都被删除还需要时间,如果redis删除过早又回出现数据库中数据被重新缓存到redis中,导致数据不一致
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/957199.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号