外观
Redis Linux 安装指南
安装前准备
系统要求
操作系统
- Red Hat Enterprise Linux (RHEL) 7+ / CentOS 7+ / AlmaLinux 8+ / Rocky Linux 8+
- Debian 9+ / Ubuntu 18.04+
- SUSE Linux Enterprise Server (SLES) 15+
硬件要求
- CPU: 至少 1 核,推荐 2 核以上。Redis 主要依赖单线程性能,因此 CPU 主频越高越好
- 内存: 至少 1GB,推荐 2GB 以上。内存大小直接决定了 Redis 能存储的数据量
- 磁盘: 至少 10GB 可用空间,推荐使用 SSD。SSD 能显著提高持久化和恢复性能
依赖项
- GCC 编译器 (版本 4.8+):用于编译 Redis 源代码
- Make 工具:用于自动化编译过程
- tcl 解释器 (用于测试):用于运行 Redis 内置的测试套件
- libssl-dev (用于 SSL 支持,Redis 6.0+):用于支持 SSL/TLS 加密连接
依赖安装
RHEL/CentOS/AlmaLinux/Rocky Linux
bash# 安装基础依赖 sudo yum install -y gcc make tcl # 安装 SSL 依赖 (Redis 6.0+) sudo yum install -y openssl-develDebian/Ubuntu
bash# 更新软件包列表 sudo apt update # 安装基础依赖 sudo apt install -y build-essential tcl # 安装 SSL 依赖 (Redis 6.0+) sudo apt install -y libssl-devSUSE Linux Enterprise Server
bash# 安装基础依赖 sudo zypper install -y gcc make tcl # 安装 SSL 依赖 (Redis 6.0+) sudo zypper install -y libopenssl-devel
安装方式
方式一:源码编译安装
源码编译安装是最灵活的安装方式,支持自定义配置和获取最新版本,适合对 Redis 有特殊配置需求或需要使用最新功能的场景。
下载源码包
bash# 创建下载目录 mkdir -p /tmp/redis-install cd /tmp/redis-install # 下载最新稳定版 Redis (可从 https://redis.io/download 获取最新版本) wget https://download.redis.io/releases/redis-7.2.5.tar.gz # 解压源码包 tar xzf redis-7.2.5.tar.gz cd redis-7.2.5编译源码
bash# 编译 make # 运行测试 (可选,推荐执行) make test安装 Redis
bash# 安装到默认目录 (/usr/local/bin) sudo make install # 或者指定安装目录 # sudo make PREFIX=/opt/redis install验证安装
bash# 查看 Redis 版本 redis-server --version redis-cli --version
方式二:包管理器安装
包管理器安装是最便捷的安装方式,适合快速部署和管理,无需手动编译,但安装的版本可能不是最新的稳定版。
RHEL/CentOS/AlmaLinux/Rocky Linux
bash# 安装 EPEL 仓库 (如果未安装) sudo yum install -y epel-release # 安装 Redis sudo yum install -y redisDebian/Ubuntu
bash# 更新软件包列表 sudo apt update # 安装 Redis sudo apt install -y redis-serverSUSE Linux Enterprise Server
bash# 安装 Redis sudo zypper install -y redis
方式三:二进制包安装
二进制包安装适合不想编译源码的用户,直接使用官方预编译的二进制文件,既便捷又能获取最新版本。
下载二进制包
bash# 创建下载目录 mkdir -p /tmp/redis-install cd /tmp/redis-install # 下载二进制包 (可从 https://redis.io/download 获取最新版本) wget https://github.com/redis/redis/releases/download/7.2.5/redis-7.2.5.tar.gz # 解压二进制包 tar xzf redis-7.2.5.tar.gz cd redis-7.2.5安装二进制文件
bash# 创建 Redis 安装目录 sudo mkdir -p /opt/redis/bin sudo mkdir -p /opt/redis/etc # 复制二进制文件 sudo cp src/redis-server src/redis-cli src/redis-sentinel src/redis-benchmark src/redis-check-aof src/redis-check-rdb /opt/redis/bin/ # 复制配置文件 sudo cp redis.conf /opt/redis/etc/ # 添加到 PATH echo 'export PATH=$PATH:/opt/redis/bin' | sudo tee -a /etc/profile source /etc/profile
配置 Redis
创建 Redis 配置
创建配置目录
bash# 创建配置目录 sudo mkdir -p /etc/redis # 创建数据目录 sudo mkdir -p /var/lib/redis # 创建日志目录 sudo mkdir -p /var/log/redis # 创建运行目录 sudo mkdir -p /var/run/redis复制默认配置文件
bash# 源码安装方式 sudo cp /tmp/redis-install/redis-7.2.5/redis.conf /etc/redis/redis.conf # 包管理器安装方式 # 默认配置文件已存在于 /etc/redis.conf 或 /etc/redis/redis.conf修改配置文件
bash# 使用 vim 编辑配置文件 sudo vim /etc/redis/redis.conf关键配置项及详细说明:
txt# 绑定 IP 地址,生产环境建议仅绑定本地或内网 IP,避免暴露到公网 bind 127.0.0.1 192.168.1.100 # Redis 服务监听端口,默认 6379 port 6379 # 是否以守护进程方式运行,建议设置为 yes,让 Redis 在后台运行 daemonize yes # PID 文件存储路径,用于管理 Redis 进程 pidfile /var/run/redis/redis-server.pid # 日志文件路径,用于记录 Redis 运行日志 logfile /var/log/redis/redis-server.log # 数据持久化目录,存放 RDB 和 AOF 文件 dir /var/lib/redis # 设置 Redis 访问密码,生产环境必须设置强密码 requirepass your_strong_password # 主从复制时从节点访问主节点的密码,需与主节点密码一致 masterauth your_strong_password # Redis 最大使用内存限制,根据服务器实际内存大小调整 maxmemory 2gb # 内存淘汰策略,当达到最大内存时,Redis 会按照此策略淘汰数据 # allkeys-lru 表示淘汰最近最少使用的键 maxmemory-policy allkeys-lru # 是否开启 AOF 持久化,建议开启以提高数据安全性 appendonly yes # AOF 持久化策略,everysec 表示每秒同步一次,平衡性能和安全性 appendfsync everysec设置文件权限
bash# 创建 Redis 用户和组 (如果不存在) sudo groupadd -r redis sudo useradd -r -g redis -s /sbin/nologin redis # 设置目录权限 sudo chown -R redis:redis /var/lib/redis sudo chown -R redis:redis /var/log/redis sudo chown -R redis:redis /var/run/redis sudo chown redis:redis /etc/redis/redis.conf sudo chmod 600 /etc/redis/redis.conf
启动 Redis
手动启动
直接启动
bash# 启动 Redis 服务器 sudo redis-server /etc/redis/redis.conf # 或者使用 redis 用户启动 sudo -u redis redis-server /etc/redis/redis.conf使用 systemctl 启动 (包管理器安装)
bash# 启动 Redis sudo systemctl start redis # 查看状态 sudo systemctl status redis # 停止 Redis sudo systemctl stop redis # 重启 Redis sudo systemctl restart redis使用 systemctl 启动 (源码/二进制安装)
bash# 创建 systemd 服务文件 sudo vim /etc/systemd/system/redis.service添加以下 systemd 服务配置内容,用于管理 Redis 服务:
ini[Unit] Description=Redis In-Memory Data Store After=network.target [Service] Type=forking User=redis Group=redis # Redis 启动命令,指定配置文件路径 ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf # Redis 停止命令,使用密码进行认证 ExecStop=/usr/local/bin/redis-cli -a your_strong_password shutdown # 当 Redis 服务异常退出时自动重启 Restart=always # PID 文件路径,与配置文件中的 pidfile 保持一致 PIDFile=/var/run/redis/redis-server.pid # 运行目录,用于存放临时文件 RuntimeDirectory=redis # 运行目录权限 RuntimeDirectoryMode=0755 [Install] # 系统启动级别,设置为多用户模式 WantedBy=multi-user.target注意:如果您的 Redis 安装在其他目录(如 /opt/redis),需要修改 ExecStart 和 ExecStop 中的二进制文件路径。
bash# 重载 systemd 配置 sudo systemctl daemon-reload # 启动 Redis sudo systemctl start redis # 查看状态 sudo systemctl status redis
验证 Redis 运行状态
查看进程
bash# 查看 Redis 进程 ps aux | grep redis # 查看端口监听 netstat -tlnp | grep redis ss -tlnp | grep redis使用 redis-cli 连接
bash# 连接 Redis (如果设置了密码,会提示输入密码) redis-cli # 或者直接输入密码连接 redis-cli -a your_strong_password # 测试连接 127.0.0.1:6379> PING PONG # 查看 Redis 信息 127.0.0.1:6379> INFO
开机自启配置
使用 systemd 配置开机自启
bash
# 启用开机自启
sudo systemctl enable redis
# 验证开机自启配置
sudo systemctl is-enabled redis使用 chkconfig 配置开机自启 (旧版系统)
bash
# 启用开机自启
sudo chkconfig redis on
# 查看开机自启配置
sudo chkconfig --list redisRedis 基础操作
常用命令及说明
服务管理命令
bash# 启动 Redis 服务 sudo systemctl start redis # 停止 Redis 服务 sudo systemctl stop redis # 重启 Redis 服务 sudo systemctl restart redis # 查看 Redis 服务状态 sudo systemctl status redisRedis 客户端命令
bash# 使用密码连接 Redis 服务器 redis-cli -a your_strong_password # 查看当前数据库中所有键(生产环境慎用,可能导致性能问题) keys * # 设置一个键值对,键为 mykey,值为 "Hello Redis" set mykey "Hello Redis" # 获取指定键的值 get mykey # 查看键的类型 type mykey # 删除指定键 del mykey # 查看 Redis 服务器的详细信息 info # 查看 Redis 内存使用情况 info memory # 查看当前所有客户端连接 client list持久化相关命令
bash# 手动触发后台 RDB 持久化,不会阻塞 Redis 服务 bgsave # 手动触发 AOF 重写,优化 AOF 文件大小 bgrewriteaof
升级和卸载
升级 Redis
源码编译升级
bash# 停止 Redis 服务 sudo systemctl stop redis # 备份数据和配置 sudo cp -r /var/lib/redis /var/lib/redis.backup sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.backup # 下载新版本源码并编译安装 (参考源码编译安装步骤) # ... # 恢复数据和配置 sudo cp /var/lib/redis.backup/* /var/lib/redis/ sudo cp /etc/redis/redis.conf.backup /etc/redis/redis.conf # 启动 Redis 服务 sudo systemctl start redis # 验证升级 redis-server --version包管理器升级
bash# RHEL/CentOS/AlmaLinux/Rocky Linux sudo yum update redis # Debian/Ubuntu sudo apt update && sudo apt upgrade redis-server # 重启 Redis 服务 sudo systemctl restart redis
卸载 Redis
源码安装方式卸载
bash# 停止 Redis 服务 sudo systemctl stop redis # 删除二进制文件 sudo rm -f /usr/local/bin/redis-* # 删除配置文件 sudo rm -rf /etc/redis # 删除数据目录 sudo rm -rf /var/lib/redis # 删除日志目录 sudo rm -rf /var/log/redis # 删除运行目录 sudo rm -rf /var/run/redis # 删除 systemd 服务文件 sudo rm -f /etc/systemd/system/redis.service # 重载 systemd 配置 sudo systemctl daemon-reload包管理器安装方式卸载
bash# RHEL/CentOS/AlmaLinux/Rocky Linux sudo systemctl stop redis sudo yum remove -y redis sudo rm -rf /var/lib/redis /var/log/redis # Debian/Ubuntu sudo systemctl stop redis-server sudo apt purge -y redis-server sudo rm -rf /var/lib/redis /var/log/redis # SUSE Linux Enterprise Server sudo systemctl stop redis sudo zypper remove -y redis sudo rm -rf /var/lib/redis /var/log/redis
常见问题(FAQ)
问题 1: Redis 无法启动,提示 "Creating Server TCP listening socket *:6379: bind: Address already in use"
原因: 端口 6379 已被占用。
解决方案:
bash
# 查看占用端口的进程
lsof -i :6379
# 或者
netstat -tlnp | grep 6379
# 杀死占用端口的进程
kill -9 <PID>
# 或者修改 Redis 配置文件中的端口号
# port 6380问题 2: Redis 无法启动,提示 "Fatal error loading the DB: Invalid argument"
原因: RDB 文件损坏。
解决方案:
bash
# 尝试修复 RDB 文件
redis-check-rdb /var/lib/redis/dump.rdb
# 如果修复失败,删除损坏的 RDB 文件 (会丢失数据)
rm /var/lib/redis/dump.rdb
# 或者从备份恢复 RDB 文件
cp /var/lib/redis.backup/dump.rdb /var/lib/redis/问题 3: Redis 无法启动,提示 "Permission denied"
原因: 文件或目录权限不正确。
解决方案:
bash
# 设置正确的权限
chown -R redis:redis /var/lib/redis /var/log/redis /var/run/redis
chmod 755 /var/lib/redis /var/log/redis /var/run/redis
chmod 644 /etc/redis/redis.conf问题 4: 无法远程连接 Redis
原因: Redis 未绑定到正确的 IP 地址或防火墙阻止了连接。
解决方案:
bash
# 修改 Redis 配置,绑定到正确的 IP 地址
# bind 0.0.0.0 (允许所有 IP 访问,生产环境不推荐)
# 或者 bind 127.0.0.1 你的公网/内网 IP
# 开放防火墙端口
# RHEL/CentOS/AlmaLinux/Rocky Linux
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload
# Debian/Ubuntu
ufw allow 6379/tcp
# 验证端口开放
nc -zv <redis-server-ip> 6379问题 5: Redis 内存使用率过高
原因: 数据量过大或内存配置不合理。
解决方案:
bash
# 修改 Redis 配置,调整内存限制和淘汰策略
maxmemory 4gb
maxmemory-policy allkeys-lru
# 或者清理无用数据
del <key>
flushdb # 清空当前数据库 (谨慎使用)
flushall # 清空所有数据库 (谨慎使用)最佳实践
安全配置
- 设置强密码,长度至少 16 位
- 仅绑定必要的 IP 地址
- 启用 SSL/TLS 加密 (Redis 6.0+)
- 限制 Redis 进程的权限,使用非 root 用户运行
- 禁用危险命令,如
KEYS,FLUSHDB,FLUSHALL
性能优化
- 使用 SSD 磁盘存储数据
- 调整内存淘汰策略,根据业务需求选择
- 优化持久化配置,平衡性能和数据安全性
- 合理设置连接数限制
- 启用内存碎片整理
监控和维护
- 配置监控系统,如 Prometheus + Grafana
- 设置合理的告警规则
- 定期备份数据
- 定期清理过期数据
- 定期检查 Redis 日志
高可用性
- 部署主从复制架构
- 配置 Redis Sentinel 实现自动故障切换
- 或部署 Redis Cluster 实现高可用性和扩展性
