客户端配置注意事项

云数据库 SCS

  • 功能发布记录
  • 产品描述
    • 功能概览
    • 灾备方案介绍
    • 产品特性
    • 业务场景
    • 多活实例组介绍
    • 产品架构
    • 可观测性能力介绍
    • 什么是云数据库 Redis
    • 使用须知
    • 热活实例组介绍
    • 云数据库 Redis 版初识与选型
      • Redis 容量型(原 PegaDB)产品介绍
      • 云数据库 Redis 版与自建 Redis 的对比
      • Redis 容量版与 Redis 社区版的特性对比
    • 行业案例
      • 广告行业应用
    • 实例规格
      • Memcached集群版
      • Redis 容量型(原PegaDB)数据库
      • Redis标准版
      • 边缘数据库Redis
      • Redis集群版
  • 重要通知
    • 品牌升级
  • Redis使用限制
    • 主从节点实例与集群的区别
    • 背景信息
    • 其他说明
    • Redis容量型(PegaDB)使用命令限制
    • Redis命令使用限制
  • 快速入门
    • 快速入门流程
    • 连接实例
    • 创建实例
  • 典型实践
    • Redis 事务使用注意事项
    • Redis Pipeline 机制介绍
    • 客户端配置注意事项
    • 消息发布与订阅
  • Memcached使用限制
    • Memcached-使用限制
  • 服务等级协议SLA
    • 百度智能云可信云
    • 云数据库Redis服务条款
    • Redis服务等级协议SLA
  • 最佳实践
    • 消息发布订阅
    • Redis设计规范与最佳实践
    • 避免大 Key 热 Key 实践指南
  • API参考
    • 通用说明
    • API规格
    • 附录
    • 错误返回
    • 使用须知
    • API简介
    • 多活实例组
      • 获取同步状态
      • 多活实例组删除
      • 前置检查
      • 多活实例组列表
      • 创建多活实例组
      • 修改多活实例组名称
      • 多活实例组详情
    • 部署集
      • 创建部署集API
      • 删除部署集API
      • 获取部署集列表API
      • 修改部署集API
    • 日志管理
      • 日志明细API
      • 日志列表API
      • 审计日志开关API
    • 网络安全
      • 域名交换
      • 删除IP白名单
      • 查询IP白名单
      • 修改访问密码
      • 增加IP白名单
    • 安全管理
      • 更新安全组API
      • TDE加密
      • 绑定安全组API
      • 查看安全组API
      • 解绑安全组API
      • 开启或关闭TLS加密API
      • 获取TLS证书API
    • 账号管理
      • 设置权限
      • 修改账号密码
      • 删除账号
      • 账号列表
      • 创建账号
    • 订单服务
      • 取消预付费转后付费API
      • 变更配置
      • 续费实例
      • 续费API
      • 获取实例变更配置价格
      • 预付费转后付费API
      • 后付费转预付费API
      • 释放实例
      • 创建实例
      • 获取创建实例价格
    • 实例服务
      • 清空实例
      • 重启实例
      • 创建统一读入口
      • 设置集群为热活从地域
      • 修改实例名称
      • 解绑标签
      • 标准版升级集群版API
      • 获取实例详情
      • 从回收站中批量恢复实例
      • 主从切换API
      • 统一读入口负载均衡
      • 获取可用区列表
      • 获取实例规格列表
      • 获取实例列表
      • 获取子网列表
      • 设置集群为热活主地域
      • 集群状态检查
      • 迁移可用区API
      • 绑定标签
      • IP变更API
      • 获取回收站内的实例列表
      • 拨测接口
      • 修改实例域名
      • 释放回收站中的实例
      • 修改维护时间窗口API
    • 备份恢复
      • 查看备份列表API
      • 删除手动备份API
      • 手动备份API
      • 修改备份备注API
      • 获取备份策略API
      • 设置备份策略API
      • 获取备份的URL API
    • 热活实例组
      • 创建热活实例组
      • 实例组禁写
      • 获取热活实例组列表
      • 获取IP白名单列表
      • 移除从集群
      • 获取从角色同步状态
      • 添加IP白名单
      • 前置检查
      • 添加从集群
      • 修改热活实例组名称
      • 热活实例组详情
      • 设置从角色脏读
      • 设置流控规则
      • 变更主角色
      • 释放热活实例组
      • 删除IP白名单
    • 参数管理
      • 获取参数列表
      • 修改参数
    • 参数模版
      • 获取参数模版列表
      • 删除参数模版
      • 获取应用参数模版记录
      • 获取系统参数列表
      • 创建参数模版
      • 参数模版修改参数
      • 参数模版删除参数
      • 应用参数模版
      • 参数模版添加参数
      • 修改参数模版名称
      • 参数模版详情
    • API参考2018版
      • 通用说明
      • API规格
      • 接口说明
      • 附录
      • 错误返回
      • 使用须知
      • API简介
  • 常见问题
    • 安全管控保障
    • 费用相关问题
    • 企业上云评估参考
    • 常见问题总览
    • 性能类问题
    • 常见报错与解决方案
    • Lua脚本使用规范与注意事项
  • 版本说明
    • Redis磁盘型(PegaDB)小版本发布日志
    • Redis内存型小版本发布日志
  • 视频专区
    • 操作指南
  • 产品定价
    • 到期和欠费处理
    • 后付费
      • Redis
      • Memcached
    • 计费说明
      • 变配计费说明
      • 计费方式说明
      • 计费方式变更
      • 续费说明
      • 账单和用量查询
      • 退款说明
    • 预付费
      • Redis
      • Memcached
  • 操作指南
    • Redis操作指南
      • 多用户访问控制
      • 功能概览
      • 创建热活实例组
      • 迁移可用区
      • 导出实例列表
      • 实例状态与影响
      • IP变更
      • 创建多活实例组
      • 控制台介绍
      • Redis 实例生命周期流程
      • 任务管理
        • 任务列表
      • 只读组管理
        • 只读组管理
      • 日志管理
        • 审计日志
        • 运行日志
        • 慢日志
      • 连接指南
        • 查看连接地址
        • 使用单机模式连接
        • 数据分片规则
        • 使用redis-cli连接 Redis 集群
        • Redis实例登录方式
        • 使用 sentinel 模式连接
        • 使用集群模式连接
      • SmartDBA
        • 会话管理
        • 集群拓扑
        • 热Key分析
        • 大Key分析
        • 日志明细
      • 安全管理
        • TLS加密访问
        • 开启TDE加密
        • 开启免密访问
        • 设置IP白名单
        • 安全组
      • 账号管理
        • 修改账号密码
        • 修改账号权限
        • 修改账号备注
        • 删除账号
        • 创建账号
      • 监控报警
        • 设置报警规则
        • 自定义监控项(Redis)
        • 查看监控数据
      • 计费变更
        • 预付费转后付费
        • 后付费转预付费
      • 实例管理
        • 添加从节点
        • 删除从节点
      • 版本升级
        • 大版本升级
        • 小版本升级
      • 变更实例
        • 修改实例名称
        • 变更配置
        • 主从切换
        • 设置公网访问
        • 标准版升级为集群版
        • 修改实例端口
        • 修改实例域名
        • 设置维护窗口
      • 备份管理
        • 备份加密
        • 备份恢复
        • 按时间点恢复数据
        • 备份管理
        • Redis持久化与备份恢复概述
      • 标签管理
        • 创建标签
        • 删除标签
        • 资源账单
        • 根据标签筛选实例
      • 数据迁移
        • 使用 AOF 文件进行迁移
        • Redis数据迁移方案概览
        • 使用 DTS 迁移自建 Redis
      • 参数管理
        • 参数说明
        • 保存为参数模版
        • 查看参数修改历史
        • 禁用危险命令
        • 应用参数模版
        • 设置实例参数
        • 关闭AOF落盘
      • 节点变更
        • 变更只读节点数量
        • 变更节点数量
      • 实例生命周期
        • 清空实例
        • 重启实例
        • 实例回收站
        • 读写分离
        • 释放实例
        • 创建实例
        • 续费实例
          • 自动续费
          • 手动续费
    • 性能调优
      • 如何处理Redis集群数据倾斜
      • 排查Redis实例CPU使用率高的问题
      • 常见Latency(时延)事件的处理建议
      • 排查Redis实例流量使用率高的问题
      • 排查Redis实例内存使用率高的问题
    • Redis 容量型(原 PegaDB)操作指南
      • SmartDBA
        • 会话管理
        • 热Key分析
        • 大Key分析
        • 日志明细
      • 安全管理
        • TLS加密访问
        • 开启免密访问
        • 设置IP白名单
        • 安全组
      • 账号管理
        • 修改账号密码
        • 修改账号权限
        • 修改账号备注
        • 删除账号
        • 创建账号
      • 监控报警
        • 查看监控数据(PegaDB)
        • 设置报警规则
        • 自定义监控项(PegaDB)
      • 计费变更
        • 预付费转后付费
        • 后付费转预付费
      • 版本升级
        • 小版本升级(PegaDB)
      • 变更实例
        • 修改实例名称
        • 变更配置
        • 主从切换
        • 设置公网访问
        • 修改实例端口
        • 修改实例域名
        • 设置维护窗口
      • 备份管理
        • 数据备份
      • 参数管理
        • 参数配置
      • 节点变更
        • 变更节点数量
      • 实例生命周期
        • 释放实例
        • 创建实例
        • 续费实例
          • 自动续费
          • 手动续费
    • Memcached操作指南
      • 安全管理
        • 设置IP白名单
        • 安全组
      • 监控报警
        • 设置报警规则
        • 查看监控数据
      • 计费变更
        • 预付费转后付费
        • 后付费转预付费
      • 变更实例
        • 修改实例名称
        • 变更配置
        • 修改实例域名
      • 实例生命周期
        • 释放实例
        • 创建实例
        • 续费实例
          • 自动续费
          • 手动续费
  • SDK
    • GO-SDK
      • 异常处理
      • 初始化
      • 主要接口
      • 安装SDK工具包
      • 概述
所有文档
menu
没有找到结果,请重新输入

云数据库 SCS

  • 功能发布记录
  • 产品描述
    • 功能概览
    • 灾备方案介绍
    • 产品特性
    • 业务场景
    • 多活实例组介绍
    • 产品架构
    • 可观测性能力介绍
    • 什么是云数据库 Redis
    • 使用须知
    • 热活实例组介绍
    • 云数据库 Redis 版初识与选型
      • Redis 容量型(原 PegaDB)产品介绍
      • 云数据库 Redis 版与自建 Redis 的对比
      • Redis 容量版与 Redis 社区版的特性对比
    • 行业案例
      • 广告行业应用
    • 实例规格
      • Memcached集群版
      • Redis 容量型(原PegaDB)数据库
      • Redis标准版
      • 边缘数据库Redis
      • Redis集群版
  • 重要通知
    • 品牌升级
  • Redis使用限制
    • 主从节点实例与集群的区别
    • 背景信息
    • 其他说明
    • Redis容量型(PegaDB)使用命令限制
    • Redis命令使用限制
  • 快速入门
    • 快速入门流程
    • 连接实例
    • 创建实例
  • 典型实践
    • Redis 事务使用注意事项
    • Redis Pipeline 机制介绍
    • 客户端配置注意事项
    • 消息发布与订阅
  • Memcached使用限制
    • Memcached-使用限制
  • 服务等级协议SLA
    • 百度智能云可信云
    • 云数据库Redis服务条款
    • Redis服务等级协议SLA
  • 最佳实践
    • 消息发布订阅
    • Redis设计规范与最佳实践
    • 避免大 Key 热 Key 实践指南
  • API参考
    • 通用说明
    • API规格
    • 附录
    • 错误返回
    • 使用须知
    • API简介
    • 多活实例组
      • 获取同步状态
      • 多活实例组删除
      • 前置检查
      • 多活实例组列表
      • 创建多活实例组
      • 修改多活实例组名称
      • 多活实例组详情
    • 部署集
      • 创建部署集API
      • 删除部署集API
      • 获取部署集列表API
      • 修改部署集API
    • 日志管理
      • 日志明细API
      • 日志列表API
      • 审计日志开关API
    • 网络安全
      • 域名交换
      • 删除IP白名单
      • 查询IP白名单
      • 修改访问密码
      • 增加IP白名单
    • 安全管理
      • 更新安全组API
      • TDE加密
      • 绑定安全组API
      • 查看安全组API
      • 解绑安全组API
      • 开启或关闭TLS加密API
      • 获取TLS证书API
    • 账号管理
      • 设置权限
      • 修改账号密码
      • 删除账号
      • 账号列表
      • 创建账号
    • 订单服务
      • 取消预付费转后付费API
      • 变更配置
      • 续费实例
      • 续费API
      • 获取实例变更配置价格
      • 预付费转后付费API
      • 后付费转预付费API
      • 释放实例
      • 创建实例
      • 获取创建实例价格
    • 实例服务
      • 清空实例
      • 重启实例
      • 创建统一读入口
      • 设置集群为热活从地域
      • 修改实例名称
      • 解绑标签
      • 标准版升级集群版API
      • 获取实例详情
      • 从回收站中批量恢复实例
      • 主从切换API
      • 统一读入口负载均衡
      • 获取可用区列表
      • 获取实例规格列表
      • 获取实例列表
      • 获取子网列表
      • 设置集群为热活主地域
      • 集群状态检查
      • 迁移可用区API
      • 绑定标签
      • IP变更API
      • 获取回收站内的实例列表
      • 拨测接口
      • 修改实例域名
      • 释放回收站中的实例
      • 修改维护时间窗口API
    • 备份恢复
      • 查看备份列表API
      • 删除手动备份API
      • 手动备份API
      • 修改备份备注API
      • 获取备份策略API
      • 设置备份策略API
      • 获取备份的URL API
    • 热活实例组
      • 创建热活实例组
      • 实例组禁写
      • 获取热活实例组列表
      • 获取IP白名单列表
      • 移除从集群
      • 获取从角色同步状态
      • 添加IP白名单
      • 前置检查
      • 添加从集群
      • 修改热活实例组名称
      • 热活实例组详情
      • 设置从角色脏读
      • 设置流控规则
      • 变更主角色
      • 释放热活实例组
      • 删除IP白名单
    • 参数管理
      • 获取参数列表
      • 修改参数
    • 参数模版
      • 获取参数模版列表
      • 删除参数模版
      • 获取应用参数模版记录
      • 获取系统参数列表
      • 创建参数模版
      • 参数模版修改参数
      • 参数模版删除参数
      • 应用参数模版
      • 参数模版添加参数
      • 修改参数模版名称
      • 参数模版详情
    • API参考2018版
      • 通用说明
      • API规格
      • 接口说明
      • 附录
      • 错误返回
      • 使用须知
      • API简介
  • 常见问题
    • 安全管控保障
    • 费用相关问题
    • 企业上云评估参考
    • 常见问题总览
    • 性能类问题
    • 常见报错与解决方案
    • Lua脚本使用规范与注意事项
  • 版本说明
    • Redis磁盘型(PegaDB)小版本发布日志
    • Redis内存型小版本发布日志
  • 视频专区
    • 操作指南
  • 产品定价
    • 到期和欠费处理
    • 后付费
      • Redis
      • Memcached
    • 计费说明
      • 变配计费说明
      • 计费方式说明
      • 计费方式变更
      • 续费说明
      • 账单和用量查询
      • 退款说明
    • 预付费
      • Redis
      • Memcached
  • 操作指南
    • Redis操作指南
      • 多用户访问控制
      • 功能概览
      • 创建热活实例组
      • 迁移可用区
      • 导出实例列表
      • 实例状态与影响
      • IP变更
      • 创建多活实例组
      • 控制台介绍
      • Redis 实例生命周期流程
      • 任务管理
        • 任务列表
      • 只读组管理
        • 只读组管理
      • 日志管理
        • 审计日志
        • 运行日志
        • 慢日志
      • 连接指南
        • 查看连接地址
        • 使用单机模式连接
        • 数据分片规则
        • 使用redis-cli连接 Redis 集群
        • Redis实例登录方式
        • 使用 sentinel 模式连接
        • 使用集群模式连接
      • SmartDBA
        • 会话管理
        • 集群拓扑
        • 热Key分析
        • 大Key分析
        • 日志明细
      • 安全管理
        • TLS加密访问
        • 开启TDE加密
        • 开启免密访问
        • 设置IP白名单
        • 安全组
      • 账号管理
        • 修改账号密码
        • 修改账号权限
        • 修改账号备注
        • 删除账号
        • 创建账号
      • 监控报警
        • 设置报警规则
        • 自定义监控项(Redis)
        • 查看监控数据
      • 计费变更
        • 预付费转后付费
        • 后付费转预付费
      • 实例管理
        • 添加从节点
        • 删除从节点
      • 版本升级
        • 大版本升级
        • 小版本升级
      • 变更实例
        • 修改实例名称
        • 变更配置
        • 主从切换
        • 设置公网访问
        • 标准版升级为集群版
        • 修改实例端口
        • 修改实例域名
        • 设置维护窗口
      • 备份管理
        • 备份加密
        • 备份恢复
        • 按时间点恢复数据
        • 备份管理
        • Redis持久化与备份恢复概述
      • 标签管理
        • 创建标签
        • 删除标签
        • 资源账单
        • 根据标签筛选实例
      • 数据迁移
        • 使用 AOF 文件进行迁移
        • Redis数据迁移方案概览
        • 使用 DTS 迁移自建 Redis
      • 参数管理
        • 参数说明
        • 保存为参数模版
        • 查看参数修改历史
        • 禁用危险命令
        • 应用参数模版
        • 设置实例参数
        • 关闭AOF落盘
      • 节点变更
        • 变更只读节点数量
        • 变更节点数量
      • 实例生命周期
        • 清空实例
        • 重启实例
        • 实例回收站
        • 读写分离
        • 释放实例
        • 创建实例
        • 续费实例
          • 自动续费
          • 手动续费
    • 性能调优
      • 如何处理Redis集群数据倾斜
      • 排查Redis实例CPU使用率高的问题
      • 常见Latency(时延)事件的处理建议
      • 排查Redis实例流量使用率高的问题
      • 排查Redis实例内存使用率高的问题
    • Redis 容量型(原 PegaDB)操作指南
      • SmartDBA
        • 会话管理
        • 热Key分析
        • 大Key分析
        • 日志明细
      • 安全管理
        • TLS加密访问
        • 开启免密访问
        • 设置IP白名单
        • 安全组
      • 账号管理
        • 修改账号密码
        • 修改账号权限
        • 修改账号备注
        • 删除账号
        • 创建账号
      • 监控报警
        • 查看监控数据(PegaDB)
        • 设置报警规则
        • 自定义监控项(PegaDB)
      • 计费变更
        • 预付费转后付费
        • 后付费转预付费
      • 版本升级
        • 小版本升级(PegaDB)
      • 变更实例
        • 修改实例名称
        • 变更配置
        • 主从切换
        • 设置公网访问
        • 修改实例端口
        • 修改实例域名
        • 设置维护窗口
      • 备份管理
        • 数据备份
      • 参数管理
        • 参数配置
      • 节点变更
        • 变更节点数量
      • 实例生命周期
        • 释放实例
        • 创建实例
        • 续费实例
          • 自动续费
          • 手动续费
    • Memcached操作指南
      • 安全管理
        • 设置IP白名单
        • 安全组
      • 监控报警
        • 设置报警规则
        • 查看监控数据
      • 计费变更
        • 预付费转后付费
        • 后付费转预付费
      • 变更实例
        • 修改实例名称
        • 变更配置
        • 修改实例域名
      • 实例生命周期
        • 释放实例
        • 创建实例
        • 续费实例
          • 自动续费
          • 手动续费
  • SDK
    • GO-SDK
      • 异常处理
      • 初始化
      • 主要接口
      • 安装SDK工具包
      • 概述
  • 文档中心
  • arrow
  • 云数据库SCS
  • arrow
  • 典型实践
  • arrow
  • 客户端配置注意事项
本页目录
  • 客户端超时时间
  • 连接池
  • 容量:
  • 连接探活策略:
  • 连接获取顺序:
  • Jedis 连接池配置
  • 失败重试
  • Jedis 客户端重试示例
  • GoLang 客户端重试示例

客户端配置注意事项

更新时间:2025-08-22

云数据库 Redis 集群版和单机版兼容常用语言(Java/Golang/Python/Javascript 等)的主流客户端,且支持单机、redis cluster、sentinel 等连接模式。各个 SDK 均提供了丰富的配置项,本文将对部分比较重要的配置项做一些描述,指出部分注意事项。

客户端超时时间

客户端配置的超时时间不宜过短,否则后端 server 可能尚未处理完成就发生了超时。另外也不建议不配置超时,或者超时时间太长,比如请求长时间未完成,或连接长时间未建立,此时客户端有理由允许请求快速失败。 某些命令执行成本比其他命令要高,比如,一次性读写多个 key 的 MGET、MSET 命令,Lua 脚本,事务、响应比较大的命令,对于这类命令,建议使用更大的客户端超时,以避免命令尚未处理完成客户端就超时了,且重试后再次出现相同的情况。这类命令包含:

  • 包含较多 key 的 MSET、MGET、DEL 等:这类命令会在 Proxy 层做拆分路由到多个分片,最终响应时间由最后一个分段收到响应的时间来确定,因此这类命令往往具有相对较高的延迟。
  • 包含较多命令的 MULTI/EXEC 事务或 Lua 脚本:这类命令需要 server 处理较长的时间,一条 eval 命令脚本耗时可能是 GET/SET 的数千倍。但通常只要控制好复杂度和并发,则影响比较可控。
  • 读取较大的值:如 hgetall、keys 这类命令,返回的内容较多,这需要更长的网络传输时间,通常具有较高的延迟。
  • 执行诸如 BLPOP 之类的阻塞操作:这类阻塞命令,在无数据就绪时,本就需要等待较长时间。

目前 Proxy 和后端 server 间,针对非阻塞的请求超时默认为 2 秒,因此客户端配置的超时时间应该小于 2 秒。使用内存型 Redis 通常响应能在 10 毫秒内完成,如果遇到流量激增负载较重时,可能达到几十毫秒。因此,建议根据业务中对延迟的容忍程度,将超时时间设置为 50ms~2s 之间的数字。

连接池

一些客户端使用独占连接来处理请求,即在一个请求未执行完成之前,不能处理其他请求,当应用程序需要同时发送多个 Redis 命令时,就需要使用连接池。使用连接池可以避免频繁地创建和释放连接,可有效提升性能。在配置使用连接池时,需要考虑连接池的容量,链接探活策略,连接获取顺序等。

容量:

连接池容量不宜设置过大,否则会导致 server 端存在大量连接,同时也不可设置过小,否则会导致 Proxy 的流量不均衡,建议和发送命令的线程数保持在一个数量级。

连接探活策略:

Proxy 会主动关闭空闲时间超过 3600s 的连接,因此建议开启连接探活,探活周期可以适当调大,小于 3600s 即可。

连接获取顺序:

连接获取策略建议使用 FIFO (First In First Out),使用 LIFO(Last In First Out)可能导致只有少量连接被使用到,引起Proxy流量不均。 客户端 SDK 一般默认 LIFO(Last In First Out)的策略获取连接池中的连接,即每次使用最近放入连接池的连接。考虑一个极端的例子,有 50 个客户端, 每个客户端中只有一个连接活跃,那么连接到云数据库 Redis 集群的活跃连接数则为 50。如果集群有 20 个 Proxy,50 个连接到 20 个 Proxy,则极有可能出现 Proxy 上负载不均衡的问题。这可能导致部分 Proxy CPU 被打满,而其他的则很空闲。因此,我们建议使用 FIFO (First In First Out)的策略,即轮流地使用所有的连接。

Jedis 连接池配置

下面给出使用 Jedis 时,配置使用连接池的例子:

Java
1String host = "redis.*******.baidubce.com";
2int port = 6379;  
3String password = "*****"; 
4JedisPoolConfig config = new JedisPoolConfig();  
5config.setMaxTotal(30);  
6config.setTestOnBorrow(false);  
7config.setTestOnReturn(false);
8config.setLifo(false);
9try (JedisPool pool = new JedisPool(config, host, port, 3000, password)) {  
10    Jedis jedis = pool.getResource();  
11    jedis.set("client", "jedis");  
12    assert jedis.get("client").equals("jedis");  
13}  
14catch (Exception e) {  
15    e.printStackTrace();  
16}
17```Go
18你可以在 JedisPoolConfig 对象上配置连接池的细节:

config.setMaxTotal(10); // 设置最大连接数 config.setTestOnBorrow(false); // 从连接池中拿连接是测试其可用性 config.setTestOnReturn(false); // 放回连接池中是测试其可用性 config.setTestWhileIdle(false); // 连接空闲时测试其可用性 config.setLifo(false); // 设置连接池是否为后进先出

参数 说明 默认值 建议
maxTotal 连接池中最大连接数 8 建议和同时发送命令的线程数保持在一个数量级。
maxIdle 连接池允许的最大空闲连接数 8 这表示连接池中最大允许的空闲连接数,当此值设置的比较大时,突发的大量请求会导致创建较多的连接,而后这些连接一直处于空闲状态。当如果设置的过小,连接可能会频繁地被创建和释放。建议根据流量波动来设置,如果波动很小,可以设置为一个较小值,比如保持默认值。如果波动比较剧烈,为了避免频繁地创建和释放连接,可以和 maxTotal 保持一致。
minIdle 连接池中最少空闲连接数 0 如果设置 minIdle 为非零的值,连接池中始终会有一些空闲连接。
blockWhenExhausted 当连接池中连接用尽后,获取连接时是否要等待。 当值为 true 时,下面的 maxWait 才会生效。 true 建议使用默认值。
maxWait 从连接池获取连接时的最大等待时间。 -1(一直等待) 此值不宜设置得过大。在大多数使用 Redis 的场景下,网络延迟都在百毫秒以下,将此值设置为 2-5 秒比较合适。如果对延迟有更高的要求,可以设置得更小一些。
testOnBorrow 从连接池取连接时是否做连接有效性检测(发送 PING 命令)。检测到的无效连接将会被移除。 false 用于连接保活,连接池可以快速发现并剔除错误连接,如果高频地从连接池获取连接,开启后集群会增加不少探测流量。通常连接不会无故断开,另外用户在执行命令时也会做异常的检测,所以这里建议设置为 false。
testOnReturn 向资源池归还连接时是否做连接有效性检测(ping)。检测到无效连接将会被移除。 false 同 testOnBorrow,建议设置为 false。
lifo 从连接池中取连接的策略,是否采用 Last in first out 的策略 true 用于配置连接池获取连接的策略,和前文描述的 golang 客户端中 PoolFIFO含义类似,这里建议设置为 false,以保证 Proxy 上流量更均衡。

失败重试

用户使用云数据库 Redis 集群时,网络抖动、机器偶发故障等因素均可能导致请求失败,百度智能云数据库 Redis 集群有自动故障恢复的策略,设计合理的客户端自动重试机制能够显著提升应用程序的健壮性和用户体验。本节内容将描述配置客户端重试时需要注意的事项。

Jedis 客户端重试示例

Jedis 4.0.0 及以上版本支持重试机制。以下示例展示了如何使用 Jedis 5.0.0 进行重试操作。

Java
1PooledConnectionProvider provider = new PooledConnectionProvider(HostAndPort.from("127.0.0.1:6379"));
2int maxAttempts = 5; // 最大重试次数
3Duration maxTotalRetriesDuration = Duration.ofSeconds(10); // 最大的重试时间
4UnifiedJedis jedis = new UnifiedJedis(provider, maxAttempts, maxTotalRetriesDuration);
5try {
6    jedis.set("key", "value");
7} catch (Exception e) {
8    // 多次尝试仍没成功
9    e.printStackTrace();
10}

GoLang 客户端重试示例

GoLang 中配置重试可关注以下三个配置项:

配置项 默认值 说明
MaxRetries 3 默认失败后重试三次
MinRetryBackoff 8 如果多次失败,重试间隔时间会逐渐变长,此为最短间隔
MaxRetryBackoff 512 此为最长间隔

下面是在 Golang 中配置重试的示例:

Go
1client := redis.NewClient(&redis.Options{
2    Addr:            "127.0.0.1:6379",
3    Password:        "password",
4    MaxRetries:      3,
5    MinRetryBackoff: 8 * time.Millisecond,
6    MaxRetryBackoff: 512 * time.Millisecond,
7})

上一篇
Redis Pipeline 机制介绍
下一篇
消息发布与订阅