缓存的读写模式

缓存有三种读写模式

Cache Aside Pattern(旁路缓存),这个最常用,其他两个需要缓存组件提供支持就不说了

是最经典的缓存+数据库读写模式。 读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。

更新的时候,先更新数据库,然后再删除缓存。 

 

高并发脏读的三种情况 

1、先更新数据库,再更新缓存

更新缓存比较不好,缓存的值是一个结构如hash、list的时候,更新数据需要遍历。还会出现,缓存更新成功,数据库commit失败,数据不一致。其实这个数据不一致,下面两种都会出现

2、先删除缓存,再更新数据库

3、先更新数据库,再删除缓存(推荐)

其实,2.3可理解为一种,2,3 都会出现缓存为空,数据库commit还未完成,其他线程进来读取旧数据放到缓存中,数据不一致,可以用延时双删解决。

 

posted @ 2021-01-01 23:14  纵不朽  阅读(318)  评论(0)    收藏  举报