缓存雪崩、击穿、穿透,面试无压力

今天讲点Redis安全相关,同时也是面试中经常会问到的知识点.

**

缓存穿透

**
产生背景: 缓存穿透是指使用不存在的key进行大量的高并发查询,导致缓存无法命中,每次查询都会穿透到后端数据库查询,使得数据库的压力非常大。

解决方案:

1.接口实现api的限流、防御ddos攻击、网关实现黑名单
2.在数据库和Redis都查询不到的情况下,将数据库的空值写入到缓存中,加上短时间的有效性(只适合单个key,不适合随机产生不同的key,假如过段时间生成的key就是空的key,会影响正常的使用)
3.布隆过滤器

**

缓存击穿

**
产生背景:
在高并发的情况下,当一个缓存key过期时,因为访问该key请求较大,多个请求同时发现缓存过期,因此对多个请求同时数据库查询、同时向Redis写入缓存数据,这样会导致数据库的压力非常大。

解决方案:

1.使用分布式锁技术:多个请求同时只要谁能够获取到锁,谁就能够去数据库查询将数据查询的结果放入Redis中,没有获取到锁的请求先等待;获取到锁的请求将数据写入成功到redis中, 通知没有获取锁的请求直接从Redis获取数据即可 (服务器集群)
2. 本地锁与分布式锁一样的,使用本地锁与分布式锁机制一样,只不过分布式锁适应于服务集群、本地锁仅限于单个服务使用
3. 软过期 对热点key设置无限有效期或者异步延长时间

缓存雪崩

缓存雪崩指缓存服务器重启或者大量的缓存集中在某个时间段失效,突然给数据库产生了巨大的压力,甚至击垮数据库的情况。
解决思路:对不同的数据使用不同的失效时间。

我们应该知道的就是
穿透 :key 不存在情况下
击穿 :单个热点key失效的在并发的查询的情况下
雪崩 :多个key失效的情况下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值