Redis缓存穿透、缓存雪崩问题

穿透雪崩主要是因为查询数据库造成的,那么读写分离,缓存数据查询失败不去查数据库就好了。查的时候有即是有,无即是无,不会再查数据库,缓存的穿透和雪崩问题就不存在了。其次添加数据库和缓存同步功能,保证数据库和缓存数据是一致的即可(需要注意的是这时候数据库数据是有限和相对稳定的,其实如果是海量数据同时放入缓存这种设计策略,我个人认为本身就有些胡闹)。

缓存穿透问题
现象:请求缓存中么有对对应key的时候去数据库取,大量的缓存穿透可能造出数据库不可用。
解决方法:
1.数据库查询为空,则空值更新缓存(会增加缓存无效值)
2.使用布隆过滤器,对于重复调用进行拒绝访问(会产生误判和逻辑复杂度)
缓存雪崩问题
现象:缓存失效,请求直接到DB上导致DB不可用
解决方案:key不失效;key失效时间错开;分布式多活

总结

缓存的穿透和雪崩都是在缓存不可用时,大量连接到数据库导致数据库不可用导致的,从本质上来说做好数据库的高可用,比如数据库双活,数据库扩容,数据库主从备份,流量监控,分流限流策略等都可以提高服务可用性,为服务恢复赢得有效时间。
当然另一个要考虑的问题是黑客攻击,因为正常服务请求很难造出DB不可用,如果是黑客的大量请求,那么相应的请求告警策略,流量分流限流策略就是非常必要的网络安全保证方案。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值