Redis缓存穿透、缓存击穿、缓存雪崩概述与解决方案

缓存穿透

1、概述

缓存穿透是指使用不存在的key进行大量的高并发请求,导致缓存无法命中,大量请求直接访问数据库查询数据,使得数据库服务压力剧增,甚至宕机。

2、解决方案

(1)使用布隆过滤器

(2)实现接口限流,增加IP黑名单机制

(3)缓存无效key,例如key-null形式,设置短时间的有效期

(4)完善请求参数校验

缓存击穿

1、概述

缓存击穿是指热点key过期,大量使用热点key的请求无法命中缓存,直接访问数据库,导致数据库压力过大。

2、解决方案

(1)设置热点key永不过期或者异步延长过期时间

(2)使用互斥锁

(3)使用布隆过滤器

(4)针对热点key数据提前进行缓存预热

缓存雪崩

1、概述

缓存雪崩是指热点key大面积集中过期或者缓存服务重启(没有持久化),大量请求直接访问数据库,导致数据库服务压力剧增。

2、解决方案

(1)给热点key设置不一致的过期时间(例如设置N+n的过期时间)

(2)使用缓存集群,增加缓存服务

(3)针对热点key数据提前进行缓存预热

(4)设置热点key永不过期或者异步延长过期时间