Cache Aside Pattern(旁路缓存模式)在写数据的过程中,可以先删除 cache ,后更新 db 么?
相关知识:
Cache Aside Pattern(旁路缓存模式)
Cache Aside Pattern 是我们平时使用比较多的一个缓存读写模式,比较适合读请求比较多的场景。
Cache Aside Pattern 中服务端需要同时维系 db 和 cache,并且是以 db 的结果为准。
下面我们来看一下这个策略模式下的缓存读写步骤。
写 :
先更新 db
然后直接删除 cache 。
读 :
从 cache 中读取数据,读取到就直接返回
cache 中读取不到的话,就从 db 中读取数据返回
再把数据放到 cache 中。
问题答案:
不可以。以mysql 5.6为例,默认隔离级别为RR(可重复读)。线程1对数据进行更新,如果先删除缓存后更新DB,在两步中间若有线程2进行读数据操作,所读取的数据为更新前的数据,让后把此数据放入缓存。在此之后DB为新数据,缓存为旧数据,造成DB与缓存不一致