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永不过期或者异步延长过期时间