缓存设计模式

2020-09-28  本文已影响0人  AD刘涛

Cache Aside Pattern

这是最常用的设计模式了,其具体逻辑如下。

为什么要先把数据存储到数据库中后才让缓存失效呢?

在日常开发中,我们常常会见到这样的操作,先让缓存失效,其次更新数据库。这样的操作存在什么问题呢?

我们先假设一下,此时存在着2个并发操作:

线程1删除缓存后,正好赶上线程2的查询操作。由于线程2没有命中缓存,此时线程2会去数据库查询,此时此刻的数据库依旧存储的是老数据。当线程2拿到该数据时会进行缓存。当这些操作都完成后,线程1才开始更新操作。于是就出现了缓存中的数据依旧是之前的老数据,从而导致存储更新不及时,存在脏数据的情况。

当然了,Cache Aside Pattern 依旧存在并发问题,但在现实环境中,这样的情况不容易发生。具体信息可参考链接。

参考链接1
参考链接2
参考链接3

上一篇下一篇

猜你喜欢

热点阅读