3. 面试常见问题: redis击透,击穿,雪崩

击透, 击穿, 雪崩都在redis找不到
击透是redis没起作用,
击穿是单个key(热点key)发生高并发 导致数据库崩溃,
雪崩是多个key发生高并发导致数据库崩溃

redis击透:
redis缓存和数据库都不存在这个key时, redis就没起作用了, 这就叫击透
解决办法:
先从redis获取, 没获取到, 就从数据库获取, 在数据库也没有获取到时,
可以把这个key存储在redis, 他的value可以是字符串"没有这个数据",
下次用户又来请求这个key, 就会从redis获取了
(不过要是后面数据库又有了这个key的话, 查出来的结果就不对了, 所以还是要每隔一段时间去查一下数据库, 然后更新这个key的value)

redis击穿:
redis对于那些hot key, 也就是热点key, 他可能有段时间突然失效了, 这时请求量很多(热点key嘛), 大量请求访问数据库, 数据库可能就崩了
解决办法:
对于热点key, 同一时间访问这个key的请求很多,
要是在redis获取不到, 就加一个锁,
锁里面在加一个判断, 从redis获取看有没有这个key, 有就直接返回,没有就从数据库获取
这样的话,
第一个线程进入锁逻辑, 发现redis没有, 就会从数据库获取, 然后把这个key存储在redis,
第二个线程进来时, 进入判断逻辑发现redis里面已经有这个key了,就会从redis获取, 这样的话访问数据库的次数会少很多, 性能比较好

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值