3、redis缓存问题总结

一、 问题描述

图片

二、逐个解决

1、缓存击穿

热点key过期了,请求打到了数据库

解决方式:

不给热点key设置过期时间


2、缓存穿透

缓存没有,数据库也没有。

解决方式:
  1. 缓存空值或缓存缺省值
  2. 对入参进行校验,屏蔽无效参数请求
  3. 在redis前置布隆过滤器,快速判断

3、缓存雪崩

大量key同时失效:

给key的过期时间加上随机数,避免同时过期

Redis挂了:
  1. Redis,搭建主从集群(提高redis可靠性)
  2. 服务限流(限制访问量,减少redis压力)
  3. 服务熔断(直接返回错误,不在继续往下请求)
  4. 服务降级(redis替代方式,或者直接走库)

4、缓存污染

有不常用的key占用redis内存。

解决方式:
  1. 如果知道是那个key,直接删除
  2. Redis空间充足,可以考虑不解决
  3. 设置redis过期策略为allkey-lfu

注意是lfu,把访问次数最低的数据淘汰出缓存


Lru,解决不了如下场景:大量数据进行一次全体读取,因为这些被查询的数据刚刚被访问过,所以 lru 字段值都很大,无法淘汰不常用的key。另外,关注公众号Java技术栈,在后台回复:面试,可以获取我整理的 Redis 缓存系列面试题和答案,非常齐全。

三、总结

图片

你可能感兴趣的:(3、redis缓存问题总结)