Redis缓存

使用Redis不得不考虑缓存的问题,处理不好的话会被黑客利用从而导致缓存击穿、缓存穿透、缓存雪崩等问题

场景如下图:

 

缓存击穿:一个已经存在的key,当访问量过大的时候,有部分请求可能会绕过缓存直接请求DB,从而导致DB请求量变高,压力增大

解决方案:可以在请求key之前,使用setNx加锁,设置一定的过期时间,过期之前的其他请求直接返回

(其他方案:1、使用互斥锁,2、使用布隆过滤器,3、使用异步构建缓存,参考:https://blog.csdn.net/hjm4702192/article/details/80518952)

 

缓存穿透:访问一个不存在的key,缓存就起不到任何作用,请求会直接请求DB,导致DB请求量剧增,从而挂掉

解决方案:使用布隆过滤器,存储存在的key,当不存在的key请求时,把不存在的key直接过滤掉,直接返回

 

缓存雪崩:大量的请求访问时,key都不存在,导致缓存都起不到作用,这个时候就会造成缓存雪崩

解决方案:存储key的时候额外加上一些随机的时间,避免导致大量的key在同一时间失效导致缓存雪崩

 

posted @ 2018-11-21 16:02  凌雨尘  阅读(148)  评论(0编辑  收藏  举报