Redis-13-Redis高并发常见问题

14 篇文章 0 订阅

说明

  • Redis-13-Redis高并发常见问题
  • 主要包括:缓存穿透、缓存击穿、缓存雪崩、分布式锁
  • 官方文档:https://redis.io/documentation
  • Redis命令参考:http://redisdoc.com/

核心概念

》Redis高并发常见问题包括哪些?

  • 缓存穿透
    • 高并发反复请求Redis缓存和DB中都不存在的数据,导致DB崩溃
  • 缓存击穿
    • 是个瞬间状态,当Redis中某个key(热点key)失效的瞬间,高并发反复请求该key,导致全部请求到DB,导致DB崩溃
  • 缓存雪崩
    • 不明原因导致Redis中大量key瞬间失效,导致DB压力过大从而崩溃
  • 分布式锁

》解决方案

  • 缓存穿透
    • 对空值缓存
    • 设置白名单(使用Bitmaps)
    • 布隆过滤器(Bloom Filter)
    • 实时监控Redis
  • 缓存击穿
    • 预先设置热点数据
    • 实时调整热点key过期时间
    • 使用锁。先锁住(setnx)而不是立即去查DB
  • 缓存雪崩
    • 构建多级缓存(NGINX+Redis+其他)
    • 使用锁或队列
    • 设置过期标志(提前量),借助其他线程或服务监控过期标志提前触发更新缓存
    • 分散缓存失效时间,避免集中失效
  • 分布式锁
    • 使用setnx
    • 注意:使用时避免死锁,需要设置过期时间
    • 注意:使用时避免设置了锁但还未设置过期时间时崩溃导致死锁问题,可以使用如下命令:set k v ex 60 nx,加锁的同时设置过期时间

》其他问题

  • 如何防止分布式锁误删?
    • 误删触发场景:比如A进程上锁后进程卡死导致锁过期了还没触发释放,然后B进程进来了进行了加锁,A进程恢复后将B进程的锁释放
    • 解决方案:加锁时设置UUID,释放时进行判断UUID是否相等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值