生产-已解决-Redis连接数占满 报错 (error) ERR max number of clients reached

文章讲述了在上线新功能后,由于Redis单机版本达到最大客户端连接数引发的生产事故。问题源于旧的Redis操作工具类未正确归还连接,以及系统在高并发场景下对Redis的大量请求。解决方案包括增大Redis的最大连接数,临时迁移至阿里云TariDB集群,并优化Redis交互工具类,确保连接关闭。

记一次线上Redis 报错 ERR max number of clients reached ,Redis 宕机生产事故

一、前提交代:

新需求,参与商城品牌首单价促销价格,需要在指定时间内,已购买过指定门槛品牌。
商城内关于商品价格展示接口都需校验改商品关联的促销活动是否参加 品牌首单价门槛促销,商品详情页、订单结算页、商品列表页、购物车预览页。

线上Redis 手动搭建在阿里云linux服务器内,单机版本。且此服务器部署了一台商城服务
注意这里

由于促销活动属于高并发,高流量业务,选择把门槛品牌,门槛购买时间等信息用String 数据结构存储Redis中 数据结构如下

Redis中 BD=2 
String类型  Key:promotion:brand:firstPrice:purchasedBrand:促销活动id

Value:{
   
   
    "purchasedBrandList": [
        {
   
   
            "brandId": 9710,
            "brandName": "咿儿润"
        }
    ],
    "purchasedEndTime": 1678247960000,
    "purchasedStartTime": 1677643160000,
    "buyStartTime": 1678247960000,
    "buyEndTime": 1678247960000,
    "status": 0
}

二、开发需求

开发需求期间发现前同事写的Redis 操作工具类无法选择指定DB进行存储,默认在db=0

    public <T> T get(String key, String modulePrefix, Class<T> t) {
   
   
        checkJedisPool(); // 检测JedisPool 是否为空 
        key = generateKey(key, modulePrefix);// 组装key前缀
        try 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

真香号

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

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

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

打赏作者

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

抵扣说明:

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

余额充值