Redis主从复制需手动配置redis.conf:主节点关protected-mode、bind 0.0.0.0;从节点配replicaof和masterauth;启动时须显式指定配置文件,否则修改无效。

phpEnv 本身不参与 Redis 主从复制的配置,它只是 Windows 下的 PHP 运行环境集成包;真正要配主从的是 Redis 实例本身。你得在 phpEnv 安装目录里找到它托管的 Redis 服务(通常是 phpenv\versions\*\redis 或独立解压的 Redis 目录),然后手动改 redis.conf。
确认 phpEnv 管理的 Redis 实例位置
phpEnv 启动的 Redis 很可能不是系统级服务,而是通过脚本调用本地 redis-server.exe。你需要:
- 打开 phpEnv 控制面板 → 查看“服务管理”或“软件列表”,找 Redis 对应的安装路径
- 常见路径如:
phpenv\versions\8.2.0\redis\、phpenv\tools\redis\,或你手动放进去的任意目录 - 进该目录后确认是否存在
redis.conf和redis-server.exe - 若只有
redis-server.exe没有配置文件,可从官网下载对应版本 Redis 压缩包,提取一份干净的redis.conf放进去
主节点:关闭 protected-mode 并开放绑定
主节点必须允许从节点连接,Windows 下默认 protected-mode yes + bind 127.0.0.1 会直接拒绝外部同步请求。
- 编辑主节点的
redis.conf,确保包含以下几行: -
protected-mode no(必须关掉,否则从节点连不上) -
bind 0.0.0.0(或显式列出局域网 IP,如bind 192.168.1.100) -
port 6379(端口别被占用,且防火墙放行) - 如果设置了
requirepass yourpass,记住这个密码——它不用于客户端 AUTH,而是给从节点同步时用的
从节点:写死 replicaof + masterauth
在从节点的 redis.conf 中,不能只靠 PHP 代码临时执行 replicaof,因为 phpEnv 重启后配置丢失;必须固化到配置文件里。
- 添加两行(注意是空格分隔,不是等号):
-
replicaof 192.168.1.100 6379(IP 替换为你的主节点真实地址) -
masterauth "yourpass"(仅当主节点设了requirepass才需要;引号可选,但含空格或特殊字符时建议加) - 删掉或注释掉
bind 127.0.0.1,否则自己都连不出去 - 确保从节点的
port不跟主节点冲突(比如改用6380)
验证与排错:别信 phpinfo(),要看 INFO replication
启动主节点后,再启动从节点(用命令行运行 redis-server.exe redis.conf 更易看到报错)。然后:
- 用
redis-cli -p 6380连从节点,执行INFO replication - 关键字段:
role:slave、master_link_status:up、master_host正确 - 若仍是
role:master,说明replicaof没生效——大概率是配置文件没加载,或路径写错 - 若
master_link_status:down,先在从节点上telnet 192.168.1.100 6379测试连通性(Windows 默认无 telnet,需启用“Telnet 客户端”功能) - phpEnv 的 Redis 服务若由 bat 脚本启动,检查脚本是否硬编码了配置路径,导致你改的
redis.conf没被读取
最容易被忽略的是:phpEnv 启动 Redis 时可能没指定 -f redis.conf 参数,导致它用默认内置配置跑,你改的文件完全无效。务必确认启动命令中是否明确加载了你编辑的配置文件。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











