Redis从节点默认启用只读保护,由slave-read-only(或replica-read-only)配置控制,运行时通过INFO replication查看role=slave且slave_read_only=1确认,客户端写命令会报错“READONLY You can't write against a read only slave”。
可以,但必须明确:Redis从节点的写入控制只靠 slave-read-only(或新版 replica-read-only)配置项,且它只对客户端写命令生效,不防内部操作或管理命令。
这个配置不是“可选功能”,而是默认开启的安全基线——自 Redis 2.6 起,所有从节点默认就是 slave-read-only yes,一旦启用主从复制,客户端执行 SET、DEL 等写命令就会直接报错:(error) READONLY You can't write against a read only slave.
别只看配置文件,运行时状态才作数:
slave-read-only yes(Redis replica-read-only yes(Redis ≥ 5.0),注意旧版参数名在新版本中仍兼容,但推荐统一用新名CONFIG GET slave-read-only 或 CONFIG GET replica-read-only,返回值必须是 "yes"
INFO replication,确认 role:slave 且 master_host 非空;若显示 role:master,说明已脱离复制拓扑,该配置失效报错消失 ≠ 写入被允许,很多“能写”其实是绕过了只读限制:
slave-read-only no 是危险操作,仅用于极少数临时调试场景,重启后失效(除非写入配置文件并重载)CONFIG SET slave-read-only no 可动态关闭,但不持久化,服务重启即恢复默认 yes
SLAVEOF NO ONE 会让从节点升为主节点,角色变更后 slave-read-only 不再起作用——此时它已是主,自然可写CONFIG、DEBUG、MODULE 等管理命令默认仍可用,哪怕只读模式下也能执行 CONFIG SET 修改自身配置,必须配合 rename-command 或 ACL 禁用Cluster 模式下没有传统 slave-read-only 这个配置项,它的只读是硬编码逻辑:
slave-read-only 参数在 Cluster 中完全无效CLUSTER REPLICATE <node-id> 建立关系后自动触发,无法通过 config 命令关闭CLUSTER FAILOVER 触发故障转移,让它变成 master —— 但这属于拓扑变更,不是“解除只读”它只拦普通客户端命令,不拦三类风险:
+@all 权限,仍可执行 CONFIG SET 关闭只读CONFIG、DEBUG、MODULE 等默认开放,应通过 rename-command CONFIG "" 或 ACL 显式屏蔽redis-cli -h slave-host -p 6379 直连后执行 SLAVEOF NO ONE,瞬间打破只读边界线上环境必须把 slave-read-only yes 写死在配置文件里,配合 ACL 锁死管理命令,并监控 INFO replication 中的 role 和 slave_read_only 字段变化。任何“从节点变可写”,基本都源于角色切换或权限失控,而不是只读开关本身失灵。
Tplink企业版路由器WiFi名称的默认设置介绍(Tplink企业版路由器WiFi名称的默认设置是什么)
Tplink路由器灯常亮无法上网的原因分析(如何解决Tplink路由器灯常亮无法上网的问题)
Tplink千兆企业级路由器自动重启的作用和优势介绍(如何设置Tplink千兆企业级路由器自动重启功能)
一根天线的tplink路由器有哪些(一根天线的Tplink路由器的特点和优势介绍)
tplink路由器外网访问不了nas(Tplink路由器外网访问NAS的原因分析)
Tplink无法搜到路由器的原因分析(如何解决Tplink无法搜到路由器的问题)