缓存的读写模式

缓存有三种读写模式

Cache Aside Pattern(旁路缓存),

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

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

高并发脏读的三种情况 

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

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

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

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

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

原文地址:https://www.cnblogs.com/buxiu/p/14221230.html