可能我们有时候,需要多个在本地连接多个 redis 服务,因为 redis 不同于 mysql,mysql可以选择连接各种数据表,而且各个表之间的数据文件是独立的,而 redis 虽然有数据库,但多个数据库文件都存储在一起,dump.rdb。
我们想要在本地同时使用多个不同服务器上的数据库,是没办法做到的。
所以必须运行多个 redis 实例
我的开发环境使用的是 mac os,所以以下都是 mac 上的操作,linux 上的操作配置,类似。
好了,开始干货:
通过 homebrew 查看 redis 的介绍
brew info redis
找到配置文件:
/usr/local/etc/redis.conf
复制配置文件一份,作为以后我们所有新增加实例的 "公共配置文件"
cp /usr/local/etc/redis.conf /usr/local/etc/redis-common.conf
参考文章中,使用了:cp /usr/local/etc/redis{,-common}.conf 的简写,学了一招
修改 redis-common.conf 公共配置文件,我们使用 socket 连接,设置 port 0(当然,我们也可以使用 tcp 连接,在各个的配置文件里,设置 port 6380 ...,覆盖公共配置中的 6379)
假设我们想要配置名称为 redis-1 的实例,创建配置文件
vim /usr/local/etc/redis-1.conf
输入以下配置项:
include /usr/local/etc/redis-common.conf // 引入公共的 redis 配置文件
pidfile /usr/local/var/run/redis-1.pid // pid 文件
unixsocket /tmp/redis-1.sock // socket 文件
dbfilename dump-1.rdb // 生成的数据库文件
# vm-swap-file /tmp/redis-1.swap // 注意:这条配置项,在我的环境里不可用!!!
配置启动文件:
切换到当前登录用户的开机自启动目录 'cd ~/Libray/LaunchAgents/' 可以查看到有一个 redis 的启动配置 'homebrew.mxcl.redis.plist'
复制,并修改部分的配置项:
cp ~/Libray/LaunchAgents/homebrew.mxcl.redis.plist ~/Libray/LaunchAgents/homebrew.mxcl.redis-1.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>Label</key>
<string>homebrew.mxcl.redis-1</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/redis/bin/redis-server</string>
<string>/usr/local/etc/redis-1.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/usr/local/var</string>
<key>StandardErrorPath</key>
<string>/usr/local/var/log/redis-1.log</string>
<key>StandardOutPath</key>
<string>/usr/local/var/log/redis-1.log</string>
</dict>
</plist>
之后我们就可以通过以下命令来启动新配置的 redis 实例:
launchctl load -w ~/Libray/LaunchAgents/homebrew.mxcl.redis-1.plist
设置命令别名:
编辑自己的 shell 配置,我使用的是 zsh
vim ~/.zshrc
添加:
alias redis_start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.redis-*.plist"
alias redis_stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.redis-*.plist"
以后就可以通过 redis_start 来启动我们新配置的 redis 实例,redis_stop 来停止新配置的 redis 实例
配置完成,执行 redis_start,就可以连接我们新配置的redis实例了
redis-cli -s /tmp/redis-1.sock
查看 redis 数据库 目录,也发现新创建了 dump-1.rdb
参考文章:
https://jeremy.wordpress.com/2012/07/05/multiple-redis-instances-on-mac-os-x-with-homebrew/