运维面试之redis缓存问题及解决方案

雪崩:
当访问量超出服务器所能承载的极限时,redis缓存会直接挂掉,此时全部请求全部到达数据库,数据库无法抗住,便会导致数据库也挂掉。
解决方案:
1、缓存层的高可用Redis Sentinel 和 Redis Cluster 都实现了高可用。
2、使用Hystrix
Hystrix是一款开源的“防雪崩工具”,它通过 熔断、降级、限流三个手段来降低雪崩发生后的损失

穿透:
当一个服务器有上百万条的请求时,若是在redis缓存层查询不到这些请求的数据,那么这些请求便是直接访问到数据库,这种恶意攻击的缓存穿透就会使数据库直接挂掉(这种视缓存于无物的多数指黑客发来的恶意攻击)
解决方案:
只要去数据库中没查到,就写一个空值到缓存里去,然后设置一个过期时间,这样的话,下次有相同的 key 来访问的时候,在缓存失效之前,都可以直接从缓存中取数据。

击穿:
在某个key处于非常热点的时期,访问过多,处于集中式高并发访问的情况,当这个key在失效的瞬间,大量的请求将会击穿缓存,直接请求数据库,这种情况就像是在一道屏障上凿开了一个洞
解决方案:
1、可以将热点数据设置为永远不过期
2、基于 redis or zookeeper 实现互斥锁,等待第一个请求构建完缓存之后,再释放锁,进而其它请求才能通过该 key 访问数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值