Redis

redis缓存雪崩:
在高并发下,大量缓存key全部失效,大量请求直接落在数据库上,导致数据库宕机
解决方法:
随机设置key失效时间,避免大量key集体失效
若是集群部署,可将热点数据均匀分布在不同的redis库能够避免key全部失效问题
不设置过期时间
跑定时任务,在缓存失效前刷进新的缓存

redis缓存穿透:
redis缓存和数据库没有相关数据(例如用户直接携带id<=0的参数不断发起请求)redis中没有这样的数据,导致无法拦截,直接被穿透到数据库,导致数据库压力过大宕机
解决方法:对不存在的数据缓存在redis中,设置key和value值为null,设置一个短期过期时间段,避免过期时间过长影响用户正常使用
拉黑该ip地址
对参数进行校验,不合法参数进行拦截
布隆过滤器 将所有可能存在的数据哈西到一个足够大的bitmap中,一个不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力

redis缓存击穿:
某一个热点key,在不停地扛着高并发,当这个热点key在失效的一瞬间,持续的高并发访问就击破缓存,直接访问到数据库导致数据库宕机
解决方法:
设置热点永不过期
加上互斥锁:上面的现象是多线程去访问数据库的这条数据,我们可以再第一个查询数据的请求上加上互斥锁锁住它
其他的线程拿不到锁就等着,等第一个线程查询到了数据,然后把数据存入到redis缓存起来,后面的线程进来发现已经有缓存了,就直接走缓存了


总结:
雪崩是大面积的key缓存失效
穿透是redis里不存在这个缓存key
击穿是redis某一热点key突然失效
最终的受害者都是数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值