redis缓存一致性

Posted yinpursue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis缓存一致性相关的知识,希望对你有一定的参考价值。

项目中,使用redis来做缓存,可以有效提高系统性能,但关于缓存一致性你有了解多少?项目中缓存的操作主要是读缓存和写缓存。
1、读缓存
首先读缓存,缓存存在直接返回,缓存不存在,读数据库,保存到缓存,返回
2、写缓存
何时写缓存,新增和更新的时候的写缓存?这样做是有问题的,1、每次更新都更新缓存,浪费资源2、缓存计算复杂,比如联合表查询的结果。
所以我们采用更新的时候,删除缓存,让读取的时候来保存缓存。
但是,先更新后删除,还是先删除缓存后更新呢?
先更新后删除缓存,更新成功,删除缓存失败,那么之后每次的获取的数据都是未删除的缓存,数据不一致
先删除缓存后更新呢?在并发的时候会有问题,A线程删除缓存,然后更新中,此时B来读取数据,此时从数据库中获取到的数据是未更新的,然后保存到缓存中,然后A更新成功,结果数据不一致
最终的做法是,先删缓存,更新数据,然后异步再删除缓存。延时双删。

以上是关于redis缓存一致性的主要内容,如果未能解决你的问题,请参考以下文章

Redis缓存双写一致性

小工匠聊架构-Redis 缓存一致性设计

Redis缓存一致性

分布式-技术专区-Redis和MySQL缓存一致性问题

Redis和数据库的缓存一致性问题

Redis7高级之缓存双写一致性之更新策略探讨