我正在尝试redis
在不同的端口(6379
,6380
)上启动 2 个实例,我已遵循所有指南和创建systemd
单元的示例,但redis
不知何故,第二个实例停止了过了一会儿日志中的内容如下:
# User requested shutdown
我在redis 5.0.5
Ubuntu 上运行。18.04.2
systemd 237
我已经尝试过这两种组合:
- redis
daemonize yes
配置文件Type=forking
[Service]
- redis
daemonize no
配置文件Type=simple
[Service]
(虽然我不确定哪一个是正确的!)
我也尝试添加,supervised systemd (Type=notify)
但似乎也没有帮助!请注意,它们有单独的配置文件和单独的 pid 文件,pid 被正确写入(PIDFile=
在单位规范中指定)
请帮忙!
- 编辑 -
经过更多的实验后,我发现注释掉 RDB 持久性(dir
和dbfilename
)使得两个实例都出现!
如果存在多个实例,除了保持 2 个目录名称和 dbfile 名称不同之外,我还需要进行哪些其他更改?
答案1
以下是使用相同包运行两个实例的快速指南,重复性最低redis
,但我们将使用单独的目录pid
和sock
文件/run
(/var/run
在现代发行版中是符号链接)。使用相同的目录将在停止和重新启动任何两个服务时引起冲突。
重复的默认配置:
sudo cp /etc/redis/redis.conf /etc/redis/redis4cache.conf
sudo nano /etc/redis/redis4cache.conf
并进行如下更改:-port 6379 +port 6380 # -or- if you're using socket:- -unixsocket /run/redis/redis-server.sock +unixsocket /run/redis4cache/redis4cache.sock -pidfile /run/redis/redis-server.pid +pidfile /run/redis4cache/redis4cache.pid -logfile /var/log/redis/redis-server.log +logfile /var/log/redis/redis4cache.log -dbfilename dump.rdb +dbfilename redis4cache_dump.rdb -# maxmemory <bytes> +maxmemory 134217728 # 128MB +maxmemory-policy allkeys-lfu # (Least Frequently Used)
重复的 Redis 服务:
sudo cp /lib/systemd/system/redis-server.service /lib/systemd/system/redis4cache.service
sudo nano /lib/systemd/system/redis4cache.service
并进行如下更改:-ExecStart=/usr/bin/redis-server /etc/redis/redis.conf +ExecStart=/usr/bin/redis-server /etc/redis/redis4cache.conf -PIDFile=/run/redis/redis-server.pid +PIDFile=/run/redis4cache/redis4cache.pid -RuntimeDirectory=redis +RuntimeDirectory=redis4cache -ReadWriteDirectories=-/run/redis +ReadWriteDirectories=-/run/redis4cache -Alias=redis.service
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable redis4cache
sudo systemctl start redis4cache
验证两个服务:
ps aux | grep redis
sudo redis-cli -s /run/redis/redis-server.sock
sudo redis-cli -s /run/redis4cache/redis4cache.sock