Redis 及 Jedis 连接池生产环境参数配置说明

题外话:一名合格程序员工作的标准永远不是仅仅调通了一段代码,完成了一个功能;而是自己开发的模块可以长时间保持高效稳定的运行。

Redis缓存稳定使用需要调节两部分参数

  • RedisServer服务配置:默认安装/etc/redis.conf(根据实际情况选择对应的配置文件)
  • Jedis连接池参数配置:程序员开发连接池配置使用(为了展示清晰我们直接传参,不再引入配置文件)

1. RedisServer 参数 redis.conf

建议修改必要参数

#端口; 可选修改:考虑到增加安全性建议修改其他小众端口号
#默认6397
port 6379

#绑定接入IP; 可选修改:强安全使用,限制接入客户端
#默认本机, 两个参数分别限制ipv4与ipv6地址, 如果无任何限制修改为: * -::*
bind 127.0.0.1 -::1

#防护模式, 开启状态下,如果没有设置密码,只能由本级客户端接入
#默认开启
protected-mode yes

#密码
#默认无密码, 如要开启密码校验则取消注释 #
requirepass mypassword

#连接空闲关闭时间, 当空闲连接超过配置值后关闭, 单位:秒
#默认0, 空闲永不关闭, 
#可修改为1800, 半个小时, 具体根据实际业务需求修改, 资源充裕的情况下可以适当改大
timeout 1800

#连接心跳探测时间, 单位:秒, 探测死链及保活
#默认300, 可不用修改
tcp-keepalive 300

#最大支持的连接数
#默认 10000
maxclients 10000

还有其他高级参数,可根据项目实际情况进行修改,如: 路径相关, ssl, 是否持久化等。

2. Jedis连接池参数配置

        我们使用Jedis 4.x,在Jedis连接池配置中,无论哪种模式(Sharding散列, Cluster集群, Sentinel哨兵),使用的连接池配置可以保持一致,下一篇中我们讲解如何封装一个类库同时支持三种高可用模式。

Jedis连接池使用commons-pool2中的GenericObjectPoolConfig,基本配置参数如下

GenericObjectPoolConfig<Connection> poolConfig = new GenericObjectPoolConfig<>();
//最大连接数
poolConfig.setMaxTotal(64);
//最大空闲连接数
poolConfig.setMaxIdle(16);
//最少空闲连接数数
poolConfig.setMinIdle(8);
//最大阻塞等待时间, 5s
poolConfig.setMaxWait(Duration.ofSeconds(5));
//向连接池借用连接时是否做连接有效性检测(ping),无效连接会被移除,每次借用多执行一次 ping 命令
poolConfig.setTestOnBorrow(true);
//向连接池借用连接时是否做连接空闲检测,空闲超时的连接会被移除
poolConfig.setTestWhileIdle(true);
//空闲连接的检测周期
poolConfig.setTimeBetweenEvictionRuns(Duration.ofSeconds(30));
//连接的最小空闲时间,达到此值后空闲连接将被移除
poolConfig.setMinEvictableIdleTime(Duration.ofSeconds(60));
//做空闲资源检测时,每次的采样数,默认值3,可根据自身应用连接数进行微调,如果设置为-1,就是对所有连接做空闲监测
poolConfig.setNumTestsPerEvictionRun(-1);

具体参数说明见以上代码段注释

注意:

        timeBetweenEvictionRuns(空闲连接检测周期),需要小于服务端redis.conf中配置的timeout,否则可能造成在服务端配置的timeout时间内,一直没有检测而被服务端主动断开释放的情况,导致当程序从连接池获取资源时,如果没有配置testOnBorrow为true,可能会拿到坏的连接。如果配置了testOnBorrow为true也会造成性能的损耗。

3. 总结

        以上是可用于生产的通用必要连接参数配置可直接照搬, 但具体情况还需要根据实际业务做微调, 同时还有不少其它redis-server的高级配置,会在后面的文章中根据使用案例详细介绍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值