1.笔记图
2.什么是缓存雪崩、缓存击穿、缓存穿透?
- 缓存雪崩
- 描述:缓存雪崩是指短时间内大量的应用请求无法在 Redis 缓存中处理,应用将大量请求发送到数据库层,导致数据库层的压力激增
- 原因:
- 缓存中有大量数据同时过期,导致大量请求数据库
- Redis 实例宕机
- 缓存击穿
- 描述:某个访问非常频繁的热点数据,无法在缓存中处理,访问该数据的大量请求,一下子都发送到数据库,导致数据库压力激增
- 原因:热点数据过期失效
- 缓存穿透
- 描述:要访问的数据既不在 Redis 缓存中,也不在数据库,导致请求在访问缓存时,再去访问数据库时,数据库中也没有
- 原因:
- 缓存中的数据和数据库中的数据被误删除了
- 专门访问数据库中没有的数据
3.应对方案
- 缓存雪崩:
- 可以避免给大量的数据设置相同的过期时间
- 服务降级:
- 当应用访问的是非核心数据时,直接返回预定义、空值或错误信
- 当应用访问的是核心数据时,允许查询缓存,如果缓存缺失,也可继续读取数据库
- 熔断或限流:应用调用缓存接口时,直接返回,等到 Redis 缓存实例恢复后,再允许应用请求缓存
- 缓存击穿:对于访问特别频繁的热点数据,我们就不设置过期时间
- 缓存穿透:
- 缓存空值或缺省值
- 布隆过滤器快速判断数据是否存在,若数据不存在就直接返回