*Redis 源码编译安装指南
从源码编译 Redis 可以获得最大的灵活性,适用于需要自定义编译选项、使用最新开发版本或在特殊平台上运行的场景。
*前置条件
Redis 的编译依赖非常简单:
- C 编译器(gcc 或 clang)
- libc 库
- make 工具
- OpenSSL 开发库(可选,用于 TLS 支持)
*安装编译依赖
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install build-essential tcl pkg-config libssl-dev
Rocky/AlmaLinux:
sudo yum groupinstall "Development Tools"
sudo yum install tcl openssl-devel
macOS:
xcode-select --install
brew install openssl
*下载源码
*下载稳定版
wget https://download.redis.io/redis-stable.tar.gz
*下载指定版本
wget https://download.redis.io/redis-8.0.0.tar.gz
*验证完整性
可在 redis-hashes GitHub 仓库 中找到各版本的哈希值,验证下载文件的完整性。
*编译 Redis
*基本编译
tar -xzvf redis-stable.tar.gz
cd redis-stable
make
编译完成后,src 目录下会生成以下二进制文件:
| 文件 | 说明 |
|---|---|
redis-server |
Redis 服务器 |
redis-cli |
命令行客户端 |
redis-benchmark |
性能测试工具 |
redis-check-aof |
AOF 文件修复工具 |
redis-check-rdb |
RDB 文件检查工具 |
redis-sentinel |
Sentinel 高可用组件 |
redis-benchmark |
基准测试工具 |
*启用 TLS 支持
make BUILD_TLS=yes
*使用指定内存分配器
# 使用 jemalloc(推荐)
make MALLOC=jemalloc
# 使用 libc 默认分配器
make MALLOC=libc
*并行编译
使用多核加速编译:
make -j$(nproc)
*安装二进制文件
sudo make install
默认安装到 /usr/local/bin/。如需指定安装路径:
sudo make install PREFIX=/usr/local/redis
*运行测试
编译完成后,建议运行测试套件:
make test
注意:完整测试可能需要较长时间(10-30 分钟)。
*启动 Redis
*前台运行
redis-server
看到启动日志表示运行成功。按 Ctrl-C 停止。
*使用配置文件
redis-server /path/to/redis.conf
源码包中包含默认配置文件:
redis-server redis.conf
*生产环境安装配置
*创建必要的目录
sudo mkdir /etc/redis
sudo mkdir /var/redis
sudo mkdir /var/log/redis
sudo mkdir /var/run/redis
*复制配置文件
sudo cp redis.conf /etc/redis/6379.conf
*创建 init 脚本
Redis 源码包含 init 脚本模板:
sudo cp utils/redis_init_script /etc/init.d/redis_6379
sudo chmod 755 /etc/init.d/redis_6379
编辑脚本,设置正确的 REDISPORT:
sudo vi /etc/init.d/redis_6379
*配置 systemd 服务(推荐)
创建 /etc/systemd/system/redis.service:
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable redis
sudo systemctl start redis
*创建 redis 用户
sudo useradd -r -s /bin/false redis
sudo chown -R redis:redis /var/redis
sudo chown -R redis:redis /var/log/redis
sudo chown -R redis:redis /var/run/redis
*关键配置修改
编辑 /etc/redis/redis.conf:
# 后台运行
daemonize yes
# PID 文件
pidfile /var/run/redis/redis-server.pid
# 端口
port 6379
# 日志级别
loglevel notice
# 日志文件
logfile /var/log/redis/redis-server.log
# 数据目录
dir /var/redis
# 绑定地址(生产环境建议只绑定内网)
bind 127.0.0.1
# 设置密码(可选但强烈建议)
requirepass your_strong_password
# 启用持久化
save 900 1
save 300 10
save 60 10000
# 启用 AOF(可选)
appendonly yes
appendfilename "appendonly.aof"
*升级源码安装的 Redis
备份数据:
redis-cli SAVE cp /var/redis/dump.rdb /backup/dump.rdb.$(date +%Y%m%d)停止 Redis:
redis-cli shutdown下载并编译新版本:
wget https://download.redis.io/redis-newversion.tar.gz tar -xzvf redis-newversion.tar.gz cd redis-newversion make sudo make install启动新版本:
redis-server /etc/redis/redis.conf
*常见问题
*编译错误:"jemalloc/jemalloc.h: No such file"
make distclean
make MALLOC=libc
*编译错误:"undefined reference to `__atomic_store_8'"
在 ARM 平台上可能需要链接 atomic 库:
make LDFLAGS="-latomic"
*测试失败
某些测试可能需要特定环境。如果测试失败但基本功能正常,通常可以安全使用。
# 运行单个测试
./runtest --single unit/type/string