乐趣区

关于后端:redis缓存一致性

我的项目中,应用 redis 来做缓存,能够无效进步零碎性能,但对于缓存一致性你有理解多少?我的项目中缓存的操作次要是读缓存和写缓存。
1、读缓存
首先读缓存,缓存存在间接返回,缓存不存在,读数据库,保留到缓存,返回
2、写缓存
何时写缓存,新增和更新的时候的写缓存?这样做是有问题的,1、每次更新都更新缓存,浪费资源 2、缓存计算简单,比方联结表查问的后果。
所以咱们采纳更新的时候,删除缓存,让读取的时候来保留缓存。
然而,先更新后删除,还是先删除缓存后更新呢?
先更新后删除缓存,更新胜利,删除缓存失败,那么之后每次的获取的数据都是未删除的缓存,数据不统一
先删除缓存后更新呢?在并发的时候会有问题,A 线程删除缓存,而后更新中,此时 B 来读取数据,此时从数据库中获取到的数据是未更新的,而后保留到缓存中,而后 A 更新胜利,后果数据不统一
最终的做法是,先删缓存,更新数据,而后异步再删除缓存。延时双删。

退出移动版