生产环境推荐源码编译安装,因其可精确控制版本、安装路径和编译参数;系统包管理器仅适合开发机快速验证,存在版本滞后、配置路径不统一等问题。

生产环境推荐源码编译安装,能控制版本、路径和编译参数;系统包管理器(apt install redis-server 或 yum install redis)只适合开发机快速验证,版本滞后且配置路径不统一。
确认系统信息和基础依赖再动手
很多人卡在第一步:编译失败或命令找不到,其实问题出在环境没摸清。
- 先执行
cat /etc/os-release看发行版(Ubuntu/CentOS/Rocky等),再跑uname -m确认是x86_64还是aarch64,别下错架构的源码包 -
gcc必须存在且版本 ≥ 8(Redis 7.x 编译要求),用gcc --version检查;CentOS 7 默认是 4.8,得先升级或换镜像 - 装依赖:Ubuntu/Debian 执行
sudo apt install build-essential,CentOS/RHEL 执行sudo yum install gcc gcc-c++ make - 别跳过
redis-server --version—— 万一之前装过残留进程占着6379端口,后面启动会静默失败
源码编译安装:make 后必须 make install
make 只在 src/ 目录生成二进制文件,不执行 make install 就没法全局调用 redis-server 或 redis-cli。
- 下载并解压(以 Redis 7.0.14 为例):
wget https://download.redis.io/releases/redis-7.0.14.tar.gz && tar xzf redis-7.0.14.tar.gz && cd redis-7.0.14 - 编译:
make -j$(nproc)(-j加速,但别超 CPU 核数) - 安装到指定路径(推荐):
sudo make install PREFIX=/usr/local/redis,这样所有可执行文件会落到/usr/local/redis/bin/ - 不加
PREFIX默认装到/usr/local/bin/,容易和系统其他工具混在一起,后期清理麻烦
配置文件不能直接用默认的 redis.conf
开箱即用的 redis.conf 是为前台调试设计的,生产环境必须改几项关键参数,否则连不上、起不来、存不住。
-
daemonize yes:不设这个,redis-server会前台阻塞,关终端就退出 -
bind 0.0.0.0(或具体内网 IP):注释掉默认的bind 127.0.0.1 -::1,否则只能本地连 -
protected-mode no:和bind配合生效,否则远程连接会直接被拒绝 -
requirepass your_strong_password:空密码=裸奔,公网暴露等于送数据库 -
dir /var/lib/redis和dbfilename dump.rdb:确保目录存在且redis用户有读写权限,否则 RDB 持久化失败
用 systemd 托管服务比后台运行更可靠
用 redis-server /path/to/redis.conf & 启动看似简单,但进程崩溃不会自动拉起,日志也不进 journald,排查时两眼一抹黑。
- 写一个
/etc/systemd/system/redis.service,关键是Type=simple(不是forking),因为 Redis 7+ 已弃用daemonize的双 fork 模式 -
ExecStart必须指向你实际安装的redis-server路径(比如/usr/local/redis/bin/redis-server),并显式带配置文件 -
Restart=always和RestartSec=10能让崩溃后自动恢复,比人工守着nohup强得多 - 启用前务必执行:
sudo systemctl daemon-reload && sudo systemctl enable redis && sudo systemctl start redis - 查状态:
systemctl status redis,看是否 active (running);查日志:journalctl -u redis -f
最容易被忽略的是:Redis 7.x 默认关闭 daemonize,但 systemd 要求进程不 fork,所以配置里设 daemonize yes 反而会让服务启动失败——得删掉或设成 no,全交给 systemd 管理。这点在升级或迁移时特别容易踩坑。











