redis 的雪崩、击穿、穿透

缓存雪崩:redis中的很多key过期时间相同,过期时间到了之后,大量数据访问redis,然后redis访问数据库,redis受不了了,相当于缓存被击穿了

解决方案:

1、不要把大量的数据的超时时间设为同一个时间点,加个随机值

2、热点数据永远不过期

3、缓存数据库分布式部署

 

缓存击穿:一个key在失效的时刻,大量请求这个key,直接访问到数据中

解决方案:

1、热点数据永远不过期

2、加互斥锁

 

缓存穿透:大量获取缓存中不存在key的value,导致大量数据直接访问数据库

解决方案:

1、采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤;

2、拦截器,id<=0的直接拦截。

3、从cache和db都取不到,可以将key-value写为key-null,设置较短过期时间,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章