- 文档首页
缓存数据库 Redis 版
用户指南
参数管理
设置读写分离
设置读写分离
为节约用户成本,适应读多写少的业务场景,缓存数据库 Redis 版推出了读写分离模式,为您提供高可用、高性能、高灵活的读写分离服务。
前提条件
实例类型为主备实例。单节点实例不支持读写分离功能。关于两种类型实例的功能特性差异详情,请参见功能特性差异。 背景信息
缓存数据库 Redis 版不管是否启用分片集群,默认情况下从节点都只作为备份,不对外提供服务,只有在发生故障时,从节点提升为主节点后才承担读写流量。该种情况下,实例性能受到主节点数量及性能的限制,例如流量或并发量较高的情况下,即使数据较少,也需要使用较高规格的实例。
缓存数据库 Redis 版支持带宽限流机制,当业务流量超过实例的默认带宽时,会触发带宽限流。若出现带宽限流情况,您可以通过手动调整带宽、优化大/热 Key、设置读写分离或扩容实例等方法解决,更多详情,请参见实例合理使用带宽建议。 读写分离策略说明及设置建议
实例级别的读写分离策略
缓存数据库 Redis 版支持通过 read_request_distribution_strategy 参数设置实例的分片读写分离策略,取值范围如下
- read_primary_node_only(默认值):读请求仅发送到主节点。
- read_secondary_nodes_only:读请求随机发送到所有从节点,均匀分布。
- read_primary_node_and_secondary_nodes:读请求随机发送到主节点和所有从节点,均匀分布。
说明
针对已部署了多可用区的实例,若实例开启了就近访问功能(即 read_local_node_only 取值为 yes),读请求的发送策略会由读写分离参数和就近访问参数共同决定。更多详情,请参见就近访问。 连接级别的读写分离策略
- 缓存数据库 Redis 版支持通过 clientsetopt read_priority 命令设置当前连接的读写分离策略,取值范如下:
说明
- 仅当实例开启了读写分类策略后(即 read_request_distribution_strategy 参数取值不为 read_primary_node_only),连接级别的读写分类策略才会生效。
- 连接级别的读写分类策略仅对当前连接生效,当您断开连接或重建连接后,需要重新设置连接级别的读写分类策略,否则新建连接的读写分类策略默认会继承实例级别的读写分类策略。
- default(默认值):新建连接若不设置连接级别的读写分类策略,默认继承实例级别的读写分类策略。
- primary_preferred:读请求优先发送到主节点。
- secondary_preferred:读请求优先发送到从节点。读请求会在所有从节点中随机发送,均匀分布。
- 当您通过 redis-cli 或其他客户端工具连接 Redis 实例后,即可使用上述命令为当前连接设置读写分类策略。关于连接实例的具体操作步骤,请参见连接实例。
- 成功连接至 Redis 实例后,您可以通过如下命令将当前连接的读写分类策略设置为优先发送到从节点。
clientsetopt read_priority secondary_preferred
- 设置完成后,您可以通过 CLIENT LIST 命令查询当前连接的读写分类策略(即返回结果中的 read-priority 信息)。
id=8598 addr=172.16.***.***:53206 fd=80 name= age=622 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 tot-mem=0 argv-mem=0 events=r cmd=client auth=1 lib-name= lib-ver= read-priority=secondary-preferred
注意事项
- 修改读写分离策略(read_request_distribution_strategy)的参数值后,客户端可能会短暂出现请求失败相关报错,建议在业务低峰期执行参数修改操作,并确保客户端配置了正确的重试机制。
- 缓存数据库 Redis 版支持通过 appendonly-switch 参数设置 AOF 持久化功能,但 AOF 持久化功能和读写分离功能存在约束关系,其中
- 当参数 read_request_distribution_strategy 取值为 read_secondary_nodes_only 或 read_primary_node_and_secondary_nodes时,不支持将参数appendonly-switch 设置为 off。
- 当参数 appendonly-switch 取值为 off 时,不支持将参数 read_request_distribution_strategy 设置为 read_secondary_nodes_only 或 read_primary_node_and_secondary_nodes。
- 关于 appendonly-switch 参数的更多详情,请参见参数支持。
- 为实例开启读写分离后,您还可以通过事件监控功能来监测是否存在只读节点故障摘流(ReadOnlyNodeDrop)事件。更多详情,请参见事件监控。
操作步骤
- 在顶部菜单栏的左上角,选择实例所属的项目和地域。
- 在参数列表子页签,单击批量修改参数,从参数列表中找到 read_request_distribution_strategy,并根据业务需要修改参数值。
- 在弹出的对话框中,确认修改的参数和参数值,单击确定。
相关 API
最近更新时间:2025.12.16 14:29:20