-
1、在谈延时双删之前我们先来了解一下一般场景下数据库和redis的同步机制
-
2、上面这种同步机制会有什么问题?
在我们访问redis时,redis中的数据可能不是热点数据,即此时数据库的更新操作已经完成,但是还没有同步到redis中。 -
3、解决方案,延时双删
延时双删方案执行步骤
1.删除redis
2.更新数据库
3.延时500毫秒
4.删除redis -
问题一:为何要延时500毫秒?
这是为了我们在第二次删除redis之前能完成数据库的更新操作。
假象一下,如果没有第三步操作时,有很大概率,在两次删除redis操作执行完毕之后,数据库的数据还没有更新,此时若有请求访问数据,便会出现我们一开始提到的那个问题。 -
问题二: 为何要两次删除redis?
如果我们没有第二次删除操作,此时有请求访问数据,有可能是访问的之前未做修改的redis数据,删除操作执行后,redis为空,有请求进来时,便会去访问数据库,此时数据库中的数据已是更新后的数据,保证了数据的一致性。
写在最后:这种方法无法完全保证数据库和redis数据的一致性,只是一种常见的解决方式,更有效的解决方案通常意味着更大的系统开销,需要开发者根据项目情况选择不同的方案。
07-14
5180
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
01-28
9469
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
02-02
2万+
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
09-11
2万+
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-10
4213
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
11-15
06-30
02-03
2921
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-06
3541
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-17
1057
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-11
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交