*Redis READWRITE 命令

将当前连接的只读副本节点切换为读写模式(仅适用于副本节点)。


*语法

READWRITE

*参数说明

参数 类型 必填 说明
- - 本命令无参数

*返回值

条件 返回值
总是 OK

*时间复杂度

O(1)

*

*示例

*切换为读写模式

> READWRITE
OK

*配合 READONLY 使用

> READONLY
OK
> GET mykey
"value"
> READWRITE
OK
> SET mykey "newvalue"
OK

*在副本节点上使用

# 连接到副本节点
redis-cli -p 6380
> READWRITE
OK
> SET foo bar
OK
# 注意:写入副本不会同步到主节点,且可能被主节点覆盖

*常见错误

错误 原因 解决
ERR wrong number of arguments 传入了参数 READWRITE 不带任何参数

*最佳实践

  • 场景:在副本节点临时执行写操作(如写入本地统计信息)
  • 注意:副本节点上的写入不会同步到主节点,且可能被主节点的复制流覆盖
  • 通常用于特殊维护场景,不建议在生产环境常规使用
  • READONLY 配合使用:READONLY 允许副本接受读请求,READWRITE 恢复写能力
  • 副本节点默认处于 READWRITE 模式(不拒绝写命令),但写入不会传播

*FAQ

Q1: READWRITE 和 READONLY 有什么区别? A: READONLY 使副本节点接受读请求(即使是从主节点重定向的读请求);READWRITE 将连接恢复为普通模式(默认状态)。READONLY 主要用于允许副本处理来自 Redis Cluster 客户端的读请求。

Q2: 在副本节点上使用 READWRITE 后写入会同步到主节点吗? A: 不会。副本节点的写入是本地独立的,不会反向同步到主节点。这些写入可能被主节点的复制数据覆盖。

Q3: 主节点上执行 READWRITE 有效果吗? A: 主节点始终接受读写命令,执行 READWRITE 只是返回 OK,没有实际作用。READWRITE 主要影响在副本节点上通过 READONLY 切换到只读模式的连接。