redis笔记

2020/10/19 redis

redis读书笔记

缓存和DB不一致

一般更新DB、更新缓存方案存在写写并发造成数据不一致的风险(并发时两个线程更新DB、更新缓存顺序不一致)。实际中一般是更新DB、删除缓存的方案。后者也可能存在下面问题。

  • 更新DB成功,删除缓存失败造成数据不一致。可以通过重试解决
  • 删除缓存成功、更新DB失败,一般短暂影响数据不一致。也可以通过重试解决
  • 删除缓存成功,更新DB成功,多线程时存在数据不一致。需要延迟双删方案
  • 更新DB成功,删除缓存成功。等待缓存删除短暂期间有数据不一致风险

缓存雪崩

大多数缓存key同时过期,造成查询全部到DB层。需要优化过期时间的设置,比如加入随机值

缓存击穿

热点key过期时,查询压力全部到内存。解法方法是热点key不过期,更新DB时更新redis(写DB写缓存并发有数据不一致风险)

缓存穿透

这个场景主要是考虑DB中key也不存在时。一般是外部攻击或者程序设计不当。可以考虑加入默认null key或者布隆过滤器解决

Search

    Table of Contents