如何在macOS上让Homebrew识别多Redis实例并通过brew services管控
在macOS用Homebrew管理多端口Redis实例的解决方案
Homebrew的brew services只识别通过Formula安装的服务,手动创建service文件无效,得给第二个Redis实例创建独立的自定义Formula,具体步骤如下:
1. 创建自定义Redis实例的Formula
- 先定位官方Redis Formula的路径:
$(brew --repository)/Library/Taps/homebrew/homebrew-core/Formula/r/redis.rb - 新建本地自定义Tap目录(用于存放自己的Formula):
mkdir -p ~/homebrew-taps/Formula - 复制官方Redis Formula到自定义目录,并重命名为对应端口的名称:
cp $(brew --repository)/Library/Taps/homebrew/homebrew-core/Formula/r/redis.rb ~/homebrew-taps/Formula/redis6381.rb - 编辑
redis6381.rb,修改核心配置:- 把类名从
class Redis < Formula改为class Redis6381 < Formula - 找到
service块,修改plist关联的配置文件和启动命令:service do run [opt_bin/"redis-server", etc/"redis6381.conf"] keep_alive true working_dir var plist_options manual: "redis-server /usr/local/etc/redis6381.conf" end - 在
install块末尾追加配置文件复制与端口替换逻辑:def install # 保留原文件的install代码,添加以下内容 (etc/"redis6381.conf").write IO.read(etc/"redis.conf").gsub("6379", "6381").gsub("redis.pid", "redis6381.pid").gsub("redis.log", "redis6381.log") end
- 把类名从
2. 安装自定义Redis实例
- 将自定义Tap添加到Homebrew:
brew tap $USER/homebrew-taps - 安装自定义的Redis6381:
brew install redis6381
3. 用brew services管控实例
现在可以像操作官方Redis一样使用brew services命令:
# 启动实例 brew services start redis6381 # 停止实例 brew services stop redis6381 # 重启实例 brew services restart redis6381 # 查看所有服务状态 brew services list
4. 验证实例运行
- 检查端口监听状态:
lsof -i :6381 - 连接实例测试:
redis-cli -p 6381
额外提示
- 要创建更多实例,重复上述步骤,修改文件名、类名、端口号即可
- 自定义实例的配置文件位于
/usr/local/etc/下,可按需修改持久化、日志路径等参数 - 不要直接修改官方Redis Formula,否则Homebrew更新会覆盖你的改动
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

