Ubuntu 16.04下Redis与Redis-server服务无法同时激活的问题咨询
嘿,我来帮你把Redis服务的这个问题捋清楚~
为什么两个Redis服务不能同时处于ACTIVE状态?
核心原因很简单:这俩本质都是Redis服务器进程,默认情况下会抢占同一个端口(6379),而且会试图使用相同的数据目录、配置文件等系统资源。当其中一个服务已经启动并占用了这些资源后,另一个服务启动时就会因为端口冲突或资源占用失败,自然没法同时处于ACTIVE状态。
两者的差异是什么?
这两个服务的核心区别在于安装方式和系统集成度:
- 安装来源与路径不同:
redis-server.service是你通过apt-get install redis-server安装的Ubuntu官方软件包,它完全遵循Debian/Ubuntu的系统规范,比如:- 可执行文件在
/usr/bin/redis-server - 配置文件在
/etc/redis/redis.conf - 数据目录在
/var/lib/redis - 日志文件在
/var/log/redis/
- 可执行文件在
redis.service是你跟着DigitalOcean教程手动编译安装的版本,这种方式会让你自主选择安装路径,比如可能把可执行文件放在/usr/local/bin/redis-server,配置文件在/usr/local/etc/redis.conf,甚至需要你手动创建/etc/systemd/system/redis.service这个服务文件。
- 维护与集成度不同:
- 官方源的
redis-server会自动处理系统级的集成:比如开机自启、日志轮转、依赖管理,后续系统升级时也能跟着自动更新Redis版本,维护起来省心很多。 - 手动安装的Redis则需要你自己维护所有配置、服务文件,升级也得手动重新编译替换,适合需要特定版本(比如官方源没有的新版本)或者自定义编译参数的场景。
- 官方源的
应该安装哪一个?
根据你的使用场景来选:
- 如果只是常规使用Redis,不需要特殊版本或自定义功能,优先选
apt-get install redis-server安装的官方包,它和Ubuntu系统的兼容性最好,排查问题也更方便。 - 如果你需要Redis的某个特定版本,或者要开启官方包没带的编译选项,再考虑手动编译安装的方式。
如果非要让两个服务同时运行怎么办?
如果确实有特殊需求要同时跑两个Redis实例,你需要修改其中一个服务的配置,让它们使用不同的资源:
- 找到要修改的服务对应的配置文件(比如手动安装的
redis.service对应的/usr/local/etc/redis.conf)。 - 修改以下关键配置项:
- 将
port改成非6379的端口,比如6380 - 修改
dir(数据存储目录)为新路径,比如/var/lib/redis-6380,记得提前创建这个目录并给Redis进程设置读写权限 - 修改
logfile为不同的日志路径,比如/var/log/redis/redis-6380.log
- 将
- 重新加载systemd配置:
systemctl daemon-reload - 启动修改后的服务:
systemctl start redis.service,这时两个服务应该就能同时处于ACTIVE状态了
内容的提问来源于stack exchange,提问作者user5084534
相关产品推荐
相关产品推荐

