Redis与缓存相关问题

2022-07-19  本文已影响0人  蓝色猫猫

缓存穿透

场景:用户查询数据库中没有的数据,这样不论如何都不会写入缓存,请求量一大对数据库也不是很友好
解决方法:

  1. 缓存无效Key
  2. 布隆过滤器

缓存雪崩

场景:并发量很大的情况下,大量数据同时过期,在那一瞬间,数据库压力暴增
解决方案:

  1. 在过期时间基础上添加随机数
  2. 设置数据永不过期,新开一个线程完成更新

缓存击穿

场景:某个访问量极大的数据,在过期瞬间,所有访问量打进数据库,给数据库造成极大压力
解决方案:

  1. 设置数据永不过期,新开一个线程完成更新
  2. 对大量的访问线程进行阻塞拦截,只放一个线程与数据库进行交互,并写入缓存中

缓存与数据库一致性问题

如何保证缓存与数据库的一致性?

  1. 先操作缓存,将缓存缓存特殊值,当用户查到特殊值时则进入休眠,但是对业务有入侵性;
  2. 延迟双删:先删缓存,再写数据库,再删缓存
  3. 先写数据库再删缓存
  4. 逻辑上设置过期时间,另开线程刷新缓存,删除逻辑上过期的key
上一篇下一篇

猜你喜欢

热点阅读