使用单机模式连接

云数据库 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
  • Redis操作指南
  • arrow
  • 连接指南
  • arrow
  • 使用单机模式连接
本页目录
  • 简介
  • 背景信息
  • 主流客户端示例
  • redis-cli
  • go-redis
  • 安装客户端:
  • 连接示例代码:
  • Jedis
  • 安装 Jedis 客户端
  • 连接示例代码
  • lettuce
  • 安装 lettuce 客户端
  • 连接示例代码
  • 使用同步接口:
  • 使用异步接口:
  • 使用连接池
  • redis-py
  • 安装客户端:
  • 连接示例代码
  • node-redis
  • 安装客户端:
  • 连接示例代码:
  • php-redis
  • 示例代码:

使用单机模式连接

更新时间:2025-08-22

简介

百度智能云数据库 Redis 集群版与原生 Redis 连接方式完全兼容,支持所有主流 Redis 支持的客户端。本文档将介绍如何使用不同编程语言的主流 SDK 连接到 Redis 集群。

背景信息

云数据库 Redis 采用基于代理的 Redis 集群方案,客户端连接经由负载均衡器连接到 Proxy 上,后续客户端的请求将有 Proxy 负责路由到对应的 Redis 分片上。其结构如下:

image.png

集群版中所有的数据被放置在不同的分片上,每个分片由主从节点构成,包含同一份数据的多个副本,配合故障自动切换,可实现服务的高可用,提高数据的安全性。

因此在使用云数据库 Redis 服务时,无论购买的集群版本还是标准版本,均可将其视为单个 Redis 节点,因此可以使用与连接单机版 redis 一样的方法连接云数据库 Redis 集群。

主流客户端示例

redis-cli

Bash
1$ ./redis-cli -h redis.*******.scs.bj.baidubce.com -p 6379
2> AUTH <password>  # 使用默认用于 default 认证

go-redis

安装客户端:

github:https://github.com/redis/go-redis

Plain
1$ go get github.com/redis/go-redis/v8

连接示例代码:

Go
1host := "redis.*******.scs.bj.baidubce.com"
2port := 6379
3password := "*****"
4rdb := redis.NewClient(&redis.Options{  
5   Addr:     fmt.Sprintf("%s:%d", host, port),  
6   Password: password,
7   PoolFIFO: true,
8})
9var ctx = context.Background()
10_ = rdb.Set(ctx, "key", "value", 0).Err()  
11val, _ := rdb.Get(ctx, "key").Result()  
12if val != "value" {  
13   panic("")  
14}

如果开启了连接池,需要注意 PoolFIFO 这个参数。这里 PoolFIFO 指定连接池的工作方式,FIFO 意思是 First In First Out,这里 PoolFIFO 默认值为 false,因此在从连接池中拿连接时,默认会拿最近放入的连接。如果 PoolFIFO 保持为默认值,即 false,则会优先使用最近使用过的连接。 但为了负载更加均衡,我们希望能轮流地使用所有的连接,因此这里建议将 PoolFIFO 设置为 true。

如有想要使用 Cluster 模式连接云数据库 Redis 集群,下面是一个例子:

Go
1host := "redis.*******.scs.bj.baidubce.com"
2port := 6379  
3password := "*****"  
4rdb := redis.NewClusterClient(&redis.ClusterOptions{  
5   Addrs:    []string{fmt.Sprintf("%s:%d", host, port)},
6   Password: password,  
7})
8var ctx = context.Background()
9_ = rdb.Set(ctx, "key", "value", 0).Err()  
10val, _ := rdb.Get(ctx, "key").Result()  
11if val != "value" {  
12   panic("")  
13}

Jedis

安装 Jedis 客户端

在 pom.xml 中添加如下内容:

XML
1<dependency>  
2    <groupId>redis.clients</groupId>  
3    <artifactId>jedis</artifactId>  
4    <version>4.3.0</version>  
5</dependency>

连接示例代码

Java
1String host = "redis.*******.scs.bj.baidubce.com";
2int port = 6379;  
3String password = "*****"; 
4JedisPoolConfig config = new JedisPoolConfig();  
5config.setMaxTotal(300);  
6config.setTestOnBorrow(false);  
7config.setTestOnReturn(false);  
8try (JedisPool pool = new JedisPool(config, host, port, 3000, password)) {  
9    Jedis jedis = pool.getResource();  
10    jedis.set("client", "jedis");  
11    assert jedis.get("client").equals("jedis");  
12}  
13catch (Exception e) {  
14    e.printStackTrace();  
15}

你可以在 JedisPoolConfig 对象上配置连接池的细节:

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

这里 setTestOnBorrowsetTestOnReturnsetTestWhileIdle 用于连接保活,连接池可以快速发现并剔除错误连接。如果高频地从连接池获取连接,开启后集群会增加不少探测流量。通常连接不会无故断开,另外用户在执行命令时也会做异常的检测,所以这里建议设置为 false。

setLifo 用于配置连接池获取连接的策略,和前文描述的 golang 客户端中 PoolFIFO 含义类似,这里建议设置为 false,以保证 Proxy 上流量更均衡。

lettuce

安装 lettuce 客户端

推荐使用最新版本(目前为 6.3.2.RELEASE 以上版本)连接云数据库 Redis 集群。因为旧版本中存在已知问题,如在 lettuce 5.3.2 之前版本响应解析部分存在bug,在 lettuce 5.2 中新建连接是会发送 COMMAND 命令,这会返回几十KB的响应,大量新建连接会严重降低性能。

XML
1<dependency>
2    <groupId>io.lettuce</groupId>
3    <artifactId>lettuce-core</artifactId>
4    <version>6.3.2.RELEASE</version>
5</dependency>

连接示例代码

Java
1String host = "redis.*******.scs.bj.baidubce.com";
2int port = 6379;  
3String password = "*****";
4RedisURI uri = RedisURI.builder().withHost(host).withPort(port).withPassword(password).build();  
5RedisClient client = RedisClient.create(uri);  
6StatefulRedisConnection<String, String> connection = client.connect();  
7RedisStringCommands<String, String> sync = connection.sync();  
8sync.set("client", "lettuce");  
9String value = sync.get("client");  
10assert value.equals("lettuce");

使用同步接口:

下面的示例中使用的是同步接口:

Go
1RedisStringCommands<String, String> sync = connection.sync();
2String value = sync.get("client"); 

在执行 sync.get 后,lettuce 会将 GET client命令放入后台待发送的命令队列中,并构造一个 future 并等待其完成,此时该线程被阻塞。lettuce 的工作线程收到该请求的响应后,会将结果传递给对应的 future,此前被阻塞在 sync.get("client")上线程可继续执行。

使用异步接口:

使用异步接口,可以在执行命令后不被阻塞地等待,通常是使用回调的方式来处理结果,下面是一个例子:

Go
1RedisAsyncCommands<String, String> async = connection.async();
2async.set("client", "lettuce");
3RedisFuture<String> future = async.get("client");
4future.thenRun(new Runnable() {
5    @Override
6    public void run() {
7        try {
8            System.out.println("Got value: " + future.get());
9        } catch (Exception e) {
10            e.printStackTrace();
11        }
12    }
13});

需要注意的是,这里传递给 thenRun 的回调是在 lettuce 工作线程的 EvenLoop 中执行的,需要保证该回调函数能快速地执行完成,否则将会阻塞事件循环,并影响其他使用该连接的线程。

在 lettuce 中,支持单个链接被多处使用,但部分 Redis 命令(比如 blpop)需要独占连接,使用这类命令时需要使用单独的连接。

使用连接池

因为 lettuce 默认不使用连接池,而是使用单连接发送请求。如果使用云数据库 Redis集群版,集群如果有多个 Proxy 且客户端数量较少,则只有少量的连接连到 Proxy 上,这会出现负载不均的问题,这种场景下可以配置使用连接池,使用方法如下: https://lettuce.io/core/release/reference/#_connection_pooling

redis-py

安装客户端:

Plain
1$ pip install redis

连接示例代码

Python
1import redis
2host = "redis.*******.scs.bj.baidubce.com"
3port = 6379
4password = "*****"
5pool = redis.BlockingConnectionPool(host=host,
6                                    port=port,
7                                    password=password,
8                                    max_connections=10,
9                                    socket_connect_timeout=0.1,
10                                    socket_timeout=2)
11client = redis.Redis(connection_pool=pool)
12client.set("client", "redis")
13assert client.get("client").decode() == "redis"

node-redis

安装客户端:

Plain
1$ npm install redis

连接示例代码:

JavaScript
1import { createClient } from 'redis';
2let host = "redis.*******.scs.bj.baidubce.com";
3let port = 6379;
4let password = "*****";
5const client = createClient({
6	url: `redis://${host}:${port}`,
7	password: password,
8});
9client.on('error', err => console.log('Redis Client Error', err));
10await client.connect();
11await client.set('key', 'value');
12const value = await client.get('key');
13console.log(value) // "value"
14await client.disconnect();

php-redis

示例代码:

PHP
1<?php
2    $host = 'redis.*******.scs.bj.baidubce.com';
3    $port = 8108;
4    $password = "*****";
5    $redis = new Redis();
6    $redis->connect($host, $port);
7    $redis->auth("12345");
8    $redis->set("abc", "ABC");
9    assert($redis->get("abc") == "ABC");
10    $cluster = new RedisCluster(NULL, Array($host . ':' . $port), 1.5, 1.5, true, $password);
11    $cluster->set("def", "DEF");
12    assert($cluster->get("def") == "DEF");
13?>

以上示例展示了使用不同编程语言的主流 SDK 连接到 Redis 集群的方式,每个客户端均有大量配置项,上文中无法完全罗列,还请用户参考对应 SDK 的官方文档获取更全面的帮助信息。

上一篇
查看连接地址
下一篇
数据分片规则