使用redis 缓存问题
1、穿透
概念:缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库
解决:
1.设置空值缓存:对于那些后端不存在的数据,在Redis中设置一个空值(null或空对象)缓存,以避免重复的后端访问。
2.、布隆过滤器:布隆过滤器是一种数据结构,用于快速判断一个元素是否存在于集合中
一定不存在 直接返回
有可能存在 再查询缓存,没有,再查询数据库
Redisson直接有实现方案
异步加载数据:在缓存未命中时,可以使用异步加载数据的方式,先从后端获取数据并更新缓存,然后再返回结果给请求方,以避免阻塞。
2、击穿
概念:某一个热点数据的key突然过期,造成大量请求直达数据库,数据库宕机
解决 : 1、分布式锁
2、热点数据永不过期
3、接口限流
3、雪崩
概念:在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力
解决方案:1、随机过期时间
2、热点数据永不过期
3、给缓存业务添加降级限流策略