redis单机版安装
...大约 9 分钟
Redis 单机版源码编译安装
1. 系统环境准备
1.1 检查系统信息
# 查看系统版本
uname -a
# 查看CPU架构
lscpu1.2 安装编译依赖
aarch64
# 更新包管理器
sudo apt update
# 安装编译工具链
sudo apt install -y build-essential
# 安装必要依赖
sudo apt install -y tcl tcl-dev wget make gcc libc6-dev
# 必须安装systemd开发包(用于 USE_SYSTEMD=yes)
sudo apt install -y pkg-config libsystemd-dev
# 验证systemd开发包是否正确安装
dpkg -l | grep libsystemd
ls /usr/include/systemd/x86_64
2. 下载Redis源码
下载最新稳定版
wget http://download.redis.io/redis-stable.tar.gz下载指定版本
wget http://download.redis.io/releases/redis-7.2.0.tar.gz3. 编译安装
3.1 解压源码
tar xzf redis-stable.tar.gz
cd redis-stable3.2 编译配置
# 查看编译选项
make help
# 标准编译
make
# 带systemd支持的编译(推荐)
make USE_SYSTEMD=yes
# 优化编译(生产环境推荐)
make OPTIMIZATION=-O2
# 组合编译(推荐用于生产环境)
make USE_SYSTEMD=yes OPTIMIZATION=-O2编译参数说明
USE_SYSTEMD=yes 详细说明
🔍 什么是 USE_SYSTEMD=yes
# USE_SYSTEMD=yes 的作用:
# 1. 启用systemd通知支持
# 2. 允许Redis向systemd报告服务状态
# 3. 支持systemd的服务类型 Type=notify
# 4. 提供更精确的服务启动完成信号🆚 编译选项对比
# 不带systemd支持的编译:
make
# 结果:Redis无法与systemd通信,只能使用 Type=forking
# 带systemd支持的编译:
make USE_SYSTEMD=yes
# 结果:Redis可以向systemd发送状态通知,使用 Type=notify✅ systemd集成的优势
# 1. 精确的服务状态报告
# - Redis启动完成后主动通知systemd
# - systemd知道服务真正就绪的时间点
# 2. 更好的依赖管理
# - 其他服务可以准确等待Redis完全启动
# - 避免竞态条件
# 3. 改进的监控和日志
# - systemd可以更准确地监控Redis状态
# - 更详细的服务生命周期信息
# 4. 优雅的服务管理
# - 支持 systemctl status 显示详细状态
# - 支持 systemd 的服务重启策略OPTIMIZATION=-O2 详细说明
🔍 什么是 OPTIMIZATION=-O2
# OPTIMIZATION=-O2 的作用:
# 1. 指定GCC编译器的优化级别
# 2. -O2 是推荐的生产环境优化级别
# 3. 提高Redis运行时性能
# 4. 在编译时间和运行性能之间取得平衡📊 GCC优化级别对比
# -O0 (默认) - 无优化
# - 编译最快
# - 调试友好
# - 性能最低
# - 二进制文件最大
# -O1 - 基础优化
# - 轻量级优化
# - 编译时间适中
# - 性能有所提升
# -O2 - 标准优化(推荐生产环境)
# - 大多数优化开启
# - 不影响程序大小的优化
# - 性能显著提升
# - 编译时间稍长
# -O3 - 激进优化
# - 所有优化开启
# - 可能增加代码大小
# - 性能最高,但可能不稳定
# - 编译时间最长
# -Os - 大小优化
# - 优化代码大小
# - 适合嵌入式系统⚡ -O2 优化包含的特性
# -O2 启用的主要优化:
# 1. 指令调度优化
# 2. 循环展开
# 3. 函数内联
# 4. 常量折叠
# 5. 死代码消除
# 6. 寄存器分配优化
# 7. 控制流优化
# 8. 算术优化🎯 性能提升效果
# Redis with -O2 优化预期提升:
# 1. 吞吐量提升:10-25%
# 2. 延迟降低:5-15%
# 3. CPU使用率降低:5-20%
# 4. 内存访问效率提升🔧 编译选项组合推荐
# 开发环境(调试优先)
make
# 测试环境(平衡性能和调试)
make OPTIMIZATION=-O1
# 生产环境(性能优先)
make OPTIMIZATION=-O2 USE_SYSTEMD=yes
# 高性能环境(激进优化,谨慎使用)
make OPTIMIZATION=-O3 USE_SYSTEMD=yes
# 嵌入式环境(空间优先)
make OPTIMIZATION=-Os运行测试(可选但推荐)
# 运行完整测试套件
make test
# 快速测试
src/redis-server --test-memory 10243.2 安装到系统
# 方法一:安装到默认位置 /usr/local/bin(推荐)
sudo make install
# 方法二:安装到指定目录
sudo make install PREFIX=/usr/local/redis
# 注意:如果使用自定义路径,需要将 /usr/local/redis/bin 添加到 PATH
# 方法三:完整的自定义安装流程
# 1. 编译(如果还没编译)
make
# 2. 安装到自定义目录
sudo make install PREFIX=/usr/local/redis
# 3. 添加到PATH(可选)
echo 'export PATH=/usr/local/redis/bin:$PATH' >> ~/.bashrc
source ~/.bashrc安装路径说明
# 默认安装路径(PREFIX=/usr/local):
# /usr/local/bin/redis-server
# /usr/local/bin/redis-cli
# /usr/local/bin/redis-benchmark
# 等等...
# 自定义安装路径(PREFIX=/usr/local/redis):
# /usr/local/redis/bin/redis-server
# /usr/local/redis/bin/redis-cli
# /usr/local/redis/bin/redis-benchmark
# 等等...4. 系统配置
创建Redis用户和目录
# 创建redis系统用户
sudo useradd --system --home /var/lib/redis --shell /bin/false redis
# 创建必要目录
sudo mkdir -p /etc/redis # 配置文件目录
sudo mkdir -p /var/lib/redis # 数据文件目录(重要!)
sudo mkdir -p /var/log/redis # 日志文件目录
# 设置目录权限
sudo chown redis:redis /var/lib/redis
sudo chown redis:redis /var/log/redis📂 Redis目录结构说明
# 程序安装位置(您已完成)
/usr/local/redis/bin/ # Redis可执行文件
# 数据和配置位置(需要创建)
/etc/redis/ # 配置文件
├── redis.conf # 主配置文件
/var/lib/redis/ # 数据文件目录(重要!)
├── dump.rdb # RDB持久化文件
├── appendonly.aof # AOF持久化文件(如果启用)
├── nodes.conf # 集群配置(如果使用集群)
/var/log/redis/ # 日志文件
├── redis-server.log # Redis服务日志
# 运行时文件(可选)
/var/run/redis/ # PID文件等
├── redis-server.pid # 进程ID文件配置文件设置
# 注意:redis.conf在源码目录中,需要手动复制
# 进入Redis源码目录(根据您的实际路径调整)
cd redis-stable # 或 cd /usr/local/src/redis-stable
# 验证redis.conf文件存在
ls -la redis.conf
# 复制默认配置文件到系统目录
sudo cp redis.conf /etc/redis/redis.conf
# 备份原配置
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.bak
# 设置配置文件权限
sudo chown root:redis /etc/redis/redis.conf
sudo chmod 640 /etc/redis/redis.conf
# 编辑配置文件
sudo nano /etc/redis/redis.conf🔍 查找redis.conf文件
# 如果不确定redis.conf在哪里,可以查找
find . -name "redis.conf" -type f
# 或者在整个系统中查找
sudo find / -name "redis.conf" -type f 2>/dev/null
# 也可以从Redis源码下载单独的配置文件
wget https://raw.githubusercontent.com/redis/redis/stable/redis.conf -O /tmp/redis.conf
sudo mv /tmp/redis.conf /etc/redis/redis.conf关键配置项修改
# 在配置文件中修改以下项:
# 后台运行
daemonize yes
# 绑定地址(安全考虑,仅本地访问)
bind 127.0.0.1
# 端口设置
port 6379
# 工作目录
dir /var/lib/redis
# 日志文件
logfile /var/log/redis/redis-server.log
# 日志级别
loglevel notice
# 数据持久化
save 900 1
save 300 10
save 60 10000
# RDB文件名
dbfilename dump.rdb
# 运行用户
user redis
# 最大内存设置(根据实际情况调整)
# maxmemory 2gb
# maxmemory-policy allkeys-lru5. 创建系统服务
创建systemd服务文件
🔧 systemd支持版本(推荐 - 需要 USE_SYSTEMD=yes 编译)
sudo tee /etc/systemd/system/redis.service > /dev/null <<EOF
[Unit]
Description=Redis In-Memory Data Store
After=network.target
Documentation=http://redis.io/documentation
[Service]
Type=notify
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
TimeoutStopSec=0
Restart=always
User=redis
Group=redis
# 安全设置
NoNewPrivileges=yes
PrivateTmp=yes
PrivateDevices=yes
ProtectHome=yes
ProtectSystem=strict
ReadWritePaths=/var/lib/redis
ReadWritePaths=/var/log/redis
[Install]
WantedBy=multi-user.target
EOF🔄 传统版本(如果没有使用 USE_SYSTEMD=yes 编译)
sudo tee /etc/systemd/system/redis.service > /dev/null <<EOF
[Unit]
Description=Redis In-Memory Data Store
After=network.target
Documentation=http://redis.io/documentation
[Service]
Type=forking
PIDFile=/var/run/redis/redis-server.pid
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
TimeoutStopSec=0
Restart=always
User=redis
Group=redis
# 安全设置
NoNewPrivileges=yes
PrivateTmp=yes
PrivateDevices=yes
ProtectHome=yes
ProtectSystem=strict
ReadWritePaths=/var/lib/redis
ReadWritePaths=/var/log/redis
ReadWritePaths=/var/run/redis
[Install]
WantedBy=multi-user.target
EOF
# 同时需要创建PID文件目录
sudo mkdir -p /var/run/redis
sudo chown redis:redis /var/run/redis📊 两种配置的关键区别
# systemd集成版本 (USE_SYSTEMD=yes)
Type=notify # Redis主动通知systemd启动完成
# 无需PID文件 # systemd直接跟踪进程
# 传统版本 (标准编译)
Type=forking # systemd等待后台进程启动
PIDFile=... # 需要PID文件来跟踪进程启动和启用服务
# 重载systemd配置
sudo systemctl daemon-reload
# 启用Redis服务(开机自启)
sudo systemctl enable redis
# 启动Redis服务
sudo systemctl start redis
# 检查服务状态
sudo systemctl status redis6. 验证安装
基本连接测试
# 使用redis-cli连接
redis-cli ping
# 预期输出:PONG
# 查看Redis信息
redis-cli info server
# 简单读写测试
redis-cli set test "Hello Redis"
redis-cli get test性能测试
# 运行基准测试
redis-benchmark -h 127.0.0.1 -p 6379 -n 10000 -c 50
# 测试特定操作
redis-benchmark -t set,lpush -n 100000 -q监控和日志
# 查看服务状态
sudo systemctl status redis
# 查看日志
sudo journalctl -u redis -f
# 查看Redis日志文件
sudo tail -f /var/log/redis/redis-server.log
# 实时监控Redis操作
redis-cli monitor7. 安全配置(可选)
设置密码认证
# 编辑配置文件
sudo nano /etc/redis/redis.conf
# 添加密码设置
# requirepass your_secure_password_here
# 重启服务应用配置
sudo systemctl restart redis
# 使用密码连接
redis-cli -a your_secure_password_here ping防火墙配置
# 如果需要远程访问,配置防火墙
sudo ufw allow 6379/tcp
# 限制特定IP访问
sudo ufw allow from 192.168.1.0/24 to any port 63798. 维护和升级
备份数据
# 手动备份RDB文件
sudo cp /var/lib/redis/dump.rdb /backup/redis-backup-$(date +%Y%m%d).rdb
# 使用Redis命令备份
redis-cli BGSAVE升级Redis
# 停止服务
sudo systemctl stop redis
# 备份配置和数据
sudo cp -r /etc/redis /backup/
sudo cp -r /var/lib/redis /backup/
# 编译安装新版本(重复步骤2-3)
# 启动服务
sudo systemctl start redis9. 常见问题排查
编译错误排查
🚨 systemd编译错误
# 错误信息:
# fatal error: systemd/sd-daemon.h: No such file or directory
# 解决方案:安装systemd开发包
sudo apt update
sudo apt install -y libsystemd-dev pkg-config
# 验证安装
dpkg -l | grep libsystemd-dev
ls /usr/include/systemd/sd-daemon.h
# 如果仍然报错,尝试查找systemd头文件位置
find /usr -name "sd-daemon.h" 2>/dev/null🔧 其他常见编译错误
# 错误:make: gcc: Command not found
# 解决:安装编译工具
sudo apt install -y build-essential gcc
# 错误:fatal error: tcl.h: No such file or directory
# 解决:安装tcl开发包
sudo apt install -y tcl-dev
# 错误:Permission denied
# 解决:检查目录权限或使用sudo
sudo chown -R $USER:$USER redis-stable/🐛 编译选项降级方案
# 如果systemd编译持续失败,使用标准编译
make clean
make OPTIMIZATION=-O2
# 如果-O2优化有问题,降级到-O1
make clean
make OPTIMIZATION=-O1
# 最基础的编译(兼容性最好)
make clean
make启动失败
# 检查配置文件语法
redis-server /etc/redis/redis.conf --test-config
# 检查端口占用
sudo netstat -tlnp | grep 6379
# 检查文件权限
ls -la /var/lib/redis
ls -la /var/log/redis性能调优
# 内存过量使用设置
echo 'vm.overcommit_memory = 1' | sudo tee -a /etc/sysctl.conf
# 禁用透明大页
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
# 应用内核参数
sudo sysctl -p10. 卸载Redis
# 停止并禁用服务
sudo systemctl stop redis
sudo systemctl disable redis
# 删除服务文件
sudo rm /etc/systemd/system/redis.service
# 删除二进制文件
sudo rm /usr/local/bin/redis-*
# 删除配置和数据(可选)
sudo rm -rf /etc/redis
sudo rm -rf /var/lib/redis
sudo rm -rf /var/log/redis
# 删除用户
sudo userdel redis
# 重载systemd
sudo systemctl daemon-reload注意事项:
- 生产环境建议使用稳定版本
- 根据实际需求调整内存和并发配置
- 定期备份数据和配置文件
- 监控Redis性能和资源使用情况
Powered by Waline v3.6.0