缓存的读写模式
缓存有三种读写模式
Cache Aside Pattern(旁路缓存),这个最常用,其他两个需要缓存组件提供支持就不说了
是最经典的缓存+数据库读写模式。 读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。
更新的时候,先更新数据库,然后再删除缓存。
高并发脏读的三种情况
1、先更新数据库,再更新缓存
更新缓存比较不好,缓存的值是一个结构如hash、list的时候,更新数据需要遍历。还会出现,缓存更新成功,数据库commit失败,数据不一致。其实这个数据不一致,下面两种都会出现
2、先删除缓存,再更新数据库
3、先更新数据库,再删除缓存(推荐)
其实,2.3可理解为一种,2,3 都会出现缓存为空,数据库commit还未完成,其他线程进来读取旧数据放到缓存中,数据不一致,可以用延时双删解决。

浙公网安备 33010602011771号