什么是缓存雪崩、缓存击穿、缓存穿透,三者解决方案

1.缓存雪崩:redis缓存数据库中,同一时刻大量缓存key失效,造成,大量用户请求,直接访问数据库(DB),造成数据库无法支撑(如图1)

 缓存雪崩解决方案:

1.设置缓存时间,不要再同一时间失效,随机初始化过期时间
2.redis热点的key 分别在不同节点上
3.不设置过期时间(比较暴力)
4.写个定时任务刷新缓存,3小时过期,在key失效前,更新key 
5.使用布隆过滤器或布谷鸟过滤器(推荐)

2.缓存穿透:恶意用户或黑客,使用数据库或redis数据库中没有字段进行查询,造成redis中没有数据,直接查询数据库,大量数据库查询造成数据库宕机

 缓存穿透解决方案:

1. 无论查询db数据库是否有数据(为空值时),都会写入redis中
2. ip禁用
3. 前后端进行合法性数据校验,不符合条件,直接return 
4. 使用布隆过滤器(较好)

3缓存击穿:突然热点key失效,一瞬间大量用户请求key直接打到数据库上,造成数据库宕机

 缓存穿透解决方案:

1. 不过期
2. 集群使用分布式锁,如果单体架构使用互斥锁,(在请求数据库时添加锁)最优  redis分布式锁或使用zookeeper

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值