二、高并发治理:5、Redis穿透到DB流量治理

本文分析了DB被打崩的原因,重点在于Redis穿透问题,包括未限流的查询DB和DB查不到时无法设置Redis,导致持续穿透。提出了两种优化策略:一是对穿透Redis的id进行去重加锁限流;二是即使DB不存在的值,也要设置Redis以防止持续穿透。详细阐述了策略的实现思路和代码示例。
摘要由CSDN通过智能技术生成

一、为什么DB被打崩了

1.1 穿透到DB被打崩场景还原

代码逻辑:
Redis缓冲查询不到(被穿透),查询DB重建缓冲
但代码不健壮,发生大量并发线程,并发访问热点DB数据
此类情况,轻造成重复浪费,重则DB被打崩
  • 真实案例:突增了每秒一万次查询后,导致DB CPU100%,造成某个模块故障

    • 如图,某个时刻Redis被击穿,大量查询DB, 可以看到DB在一段时间除以不可用状态

1.2 原始代码有什么问题

public void loadData(){
    //1、待查询redis的id list
    List<String> ids;
    //2、从redis查询
    List<String> redisValues = redisUtils.queryByCacheKeys("业务场景"+ids);
    //3、如果请求的ID,在redis没有全部查询到,下沉到DB查询
    if(Col
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米灵君的架构思维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值