Skip to content

Redis Linux 安装指南

安装前准备

系统要求

  1. 操作系统

    • Red Hat Enterprise Linux (RHEL) 7+ / CentOS 7+ / AlmaLinux 8+ / Rocky Linux 8+
    • Debian 9+ / Ubuntu 18.04+
    • SUSE Linux Enterprise Server (SLES) 15+
  2. 硬件要求

    • CPU: 至少 1 核,推荐 2 核以上。Redis 主要依赖单线程性能,因此 CPU 主频越高越好
    • 内存: 至少 1GB,推荐 2GB 以上。内存大小直接决定了 Redis 能存储的数据量
    • 磁盘: 至少 10GB 可用空间,推荐使用 SSD。SSD 能显著提高持久化和恢复性能
  3. 依赖项

    • GCC 编译器 (版本 4.8+):用于编译 Redis 源代码
    • Make 工具:用于自动化编译过程
    • tcl 解释器 (用于测试):用于运行 Redis 内置的测试套件
    • libssl-dev (用于 SSL 支持,Redis 6.0+):用于支持 SSL/TLS 加密连接

依赖安装

  1. RHEL/CentOS/AlmaLinux/Rocky Linux

    bash
    # 安装基础依赖
    sudo yum install -y gcc make tcl
    
    # 安装 SSL 依赖 (Redis 6.0+)
    sudo yum install -y openssl-devel
  2. Debian/Ubuntu

    bash
    # 更新软件包列表
    sudo apt update
    
    # 安装基础依赖
    sudo apt install -y build-essential tcl
    
    # 安装 SSL 依赖 (Redis 6.0+)
    sudo apt install -y libssl-dev
  3. SUSE Linux Enterprise Server

    bash
    # 安装基础依赖
    sudo zypper install -y gcc make tcl
    
    # 安装 SSL 依赖 (Redis 6.0+)
    sudo zypper install -y libopenssl-devel

安装方式

方式一:源码编译安装

源码编译安装是最灵活的安装方式,支持自定义配置和获取最新版本,适合对 Redis 有特殊配置需求或需要使用最新功能的场景。

  1. 下载源码包

    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
  2. 编译源码

    bash
    # 编译
    make
    
    # 运行测试 (可选,推荐执行)
    make test
  3. 安装 Redis

    bash
    # 安装到默认目录 (/usr/local/bin)
    sudo make install
    
    # 或者指定安装目录
    # sudo make PREFIX=/opt/redis install
  4. 验证安装

    bash
    # 查看 Redis 版本
    redis-server --version
    redis-cli --version

方式二:包管理器安装

包管理器安装是最便捷的安装方式,适合快速部署和管理,无需手动编译,但安装的版本可能不是最新的稳定版。

  1. RHEL/CentOS/AlmaLinux/Rocky Linux

    bash
    # 安装 EPEL 仓库 (如果未安装)
    sudo yum install -y epel-release
    
    # 安装 Redis
    sudo yum install -y redis
  2. Debian/Ubuntu

    bash
    # 更新软件包列表
    sudo apt update
    
    # 安装 Redis
    sudo apt install -y redis-server
  3. SUSE Linux Enterprise Server

    bash
    # 安装 Redis
    sudo zypper install -y redis

方式三:二进制包安装

二进制包安装适合不想编译源码的用户,直接使用官方预编译的二进制文件,既便捷又能获取最新版本。

  1. 下载二进制包

    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
  2. 安装二进制文件

    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 配置

  1. 创建配置目录

    bash
    # 创建配置目录
    sudo mkdir -p /etc/redis
    
    # 创建数据目录
    sudo mkdir -p /var/lib/redis
    
    # 创建日志目录
    sudo mkdir -p /var/log/redis
    
    # 创建运行目录
    sudo mkdir -p /var/run/redis
  2. 复制默认配置文件

    bash
    # 源码安装方式
    sudo cp /tmp/redis-install/redis-7.2.5/redis.conf /etc/redis/redis.conf
    
    # 包管理器安装方式
    # 默认配置文件已存在于 /etc/redis.conf 或 /etc/redis/redis.conf
  3. 修改配置文件

    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
  4. 设置文件权限

    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

手动启动

  1. 直接启动

    bash
    # 启动 Redis 服务器
    sudo redis-server /etc/redis/redis.conf
    
    # 或者使用 redis 用户启动
    sudo -u redis redis-server /etc/redis/redis.conf
  2. 使用 systemctl 启动 (包管理器安装)

    bash
    # 启动 Redis
    sudo systemctl start redis
    
    # 查看状态
    sudo systemctl status redis
    
    # 停止 Redis
    sudo systemctl stop redis
    
    # 重启 Redis
    sudo systemctl restart redis
  3. 使用 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 运行状态

  1. 查看进程

    bash
    # 查看 Redis 进程
    ps aux | grep redis
    
    # 查看端口监听
    netstat -tlnp | grep redis
    ss -tlnp | grep redis
  2. 使用 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 redis

Redis 基础操作

常用命令及说明

  1. 服务管理命令

    bash
    # 启动 Redis 服务
    sudo systemctl start redis
    
    # 停止 Redis 服务
    sudo systemctl stop redis
    
    # 重启 Redis 服务
    sudo systemctl restart redis
    
    # 查看 Redis 服务状态
    sudo systemctl status redis
  2. Redis 客户端命令

    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
  3. 持久化相关命令

    bash
    # 手动触发后台 RDB 持久化,不会阻塞 Redis 服务
    bgsave
    
    # 手动触发 AOF 重写,优化 AOF 文件大小
    bgrewriteaof

升级和卸载

升级 Redis

  1. 源码编译升级

    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
  2. 包管理器升级

    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

  1. 源码安装方式卸载

    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
  2. 包管理器安装方式卸载

    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  # 清空所有数据库 (谨慎使用)

最佳实践

  1. 安全配置

    • 设置强密码,长度至少 16 位
    • 仅绑定必要的 IP 地址
    • 启用 SSL/TLS 加密 (Redis 6.0+)
    • 限制 Redis 进程的权限,使用非 root 用户运行
    • 禁用危险命令,如 KEYS, FLUSHDB, FLUSHALL
  2. 性能优化

    • 使用 SSD 磁盘存储数据
    • 调整内存淘汰策略,根据业务需求选择
    • 优化持久化配置,平衡性能和数据安全性
    • 合理设置连接数限制
    • 启用内存碎片整理
  3. 监控和维护

    • 配置监控系统,如 Prometheus + Grafana
    • 设置合理的告警规则
    • 定期备份数据
    • 定期清理过期数据
    • 定期检查 Redis 日志
  4. 高可用性

    • 部署主从复制架构
    • 配置 Redis Sentinel 实现自动故障切换
    • 或部署 Redis Cluster 实现高可用性和扩展性