缓存雪崩解决/缓存降级

  • mysql等组件最大连接数一般10000
  • 读多写少缓存 读少写多队列
  • 雪崩(获取车次有没有票)
    • 互斥锁-限流
      • rearrentlock
        • 1.redis获取
        • 2.没命中加锁
        • 3.再次确认缓存是否命中
        • 4.然后在取db放入redis返回
        • 5.最后释放锁
        • 缺点粒度小
      • concurrenthashmap<String,String> lockmap
        • 1.redis获取
        • 2.没命中加锁
          • 1.boolean lock = false; lock = lockmap.putifAbsent(seq,“lock”)==null;
            • 1.null就没成功
              • 从缓存中获取;阻塞等待(线程sleep一定时间)
            • 2.成功放什么返回什么
              • 取db放redis
        • 3.lockmap中remove掉 lockmap.remmove(seq);
  • 缓存降级策略-牺牲数据准确性(12306余票仅仅展示作用(告诉有无))
    • 备份缓存 不过期
    • rearrentlock
      * 1.redis获取
      * 2.没命中加锁
      * 3.再次确认缓存是否命中
      * 4.然后在取db放入redis返回
      * 5.最后释放锁
      * 缺点粒度小
      • concurrenthashmap<String,String> lockmap
        • 1.redis获取
        • 2.没命中加锁
          • 1.boolean lock = false; lock = lockmap.putifAbsent(seq,“lock”)==null;
            • 1.null/没成功抢到锁
              • 降一档 备份缓存中拿
                • 有 取出
                • 无 阻塞等待从主缓存中拿(或者再降一档直接返回0)
            • 2.成功抢到锁/放什么返回什么
              • 取db更新redis主和备
        • 3.lockmap中remove掉 lockmap.remmove(seq);
          在这里插入图片描述
          在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值