*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 切换到只读模式的连接。