最新 Linux Redis 安装方法 (2024年更新)

最新 Linux Redis 安装方法详解 (2024年更新)

Redis (REmote DIctionary Server) 是一个开源的、内存中的数据结构存储系统,可以用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,并提供丰富的操作命令,使其成为构建高性能、可扩展应用程序的理想选择。

本文将详细介绍在 Linux 系统上安装最新版本 Redis 的多种方法,并涵盖相关的配置、管理和安全最佳实践。我们将以最流行的 Linux 发行版(如 Ubuntu、Debian、CentOS、Fedora)为例,并提供针对不同场景的安装建议。

目录

  1. 准备工作

    • 系统要求
    • 依赖项检查
    • 防火墙配置
  2. 安装方法

    • 方法一:使用包管理器安装 (推荐)
      • Ubuntu/Debian
      • CentOS/Fedora/RHEL
      • openSUSE
      • Arch Linux
    • 方法二:从源码编译安装 (更灵活)
      • 下载源码
      • 编译和安装
      • 创建系统用户和目录
      • 配置 systemd 服务
    • 方法三:使用 Docker 安装 (容器化)
      • 安装 Docker
      • 拉取 Redis 镜像
      • 运行 Redis 容器
      • 持久化数据
      • 连接到 Redis 容器
  3. Redis 配置

    • 配置文件 (redis.conf)
    • 重要配置参数详解
      • bind:绑定 IP 地址
      • port:监听端口
      • requirepass:设置密码
      • daemonize:后台运行
      • logfile:日志文件
      • databases:数据库数量
      • maxmemory:最大内存限制
      • maxmemory-policy:内存淘汰策略
      • appendonly:AOF 持久化
      • save:RDB 持久化
  4. Redis 管理

    • 启动、停止、重启 Redis 服务
    • 使用 redis-cli 客户端
      • 连接到 Redis 服务器
      • 常用命令示例
    • 监控 Redis
      • INFO 命令
      • redis-stat 工具
      • Redis Exporter + Prometheus + Grafana
  5. Redis 安全

    • 设置强密码
    • 绑定到安全 IP 地址
    • 禁用危险命令
    • 使用 TLS/SSL 加密
    • 定期备份数据
  6. 常见问题解答

    • 如何升级 Redis?
    • 如何卸载 Redis?
    • Redis 内存不足怎么办?
    • Redis 连接超时怎么办?
  7. 总结


1. 准备工作

在开始安装 Redis 之前,我们需要确保系统满足一些基本要求,并检查必要的依赖项。

  • 系统要求

    • Linux 内核版本 2.6 或更高 (推荐 3.10 或更高)。
    • 足够的内存 (建议至少 1GB,具体取决于数据量)。
    • 稳定的网络连接。
  • 依赖项检查

    大多数 Linux 发行版默认已经安装了编译 Redis 所需的基本工具,如 GCC、make 等。但为了确保万无一失,我们可以使用以下命令检查并安装:

    • Ubuntu/Debian:

      bash
      sudo apt update
      sudo apt install build-essential tcl

    • CentOS/Fedora/RHEL:

      bash
      sudo yum groupinstall "Development Tools"
      sudo yum install tcl

      * openSUSE
      bash
      sudo zypper install -t pattern devel_basis

  • 防火墙配置

    如果你的服务器启用了防火墙,需要确保 Redis 默认端口 (6379) 已打开,或者你配置的自定义端口已打开。

    • Ubuntu/Debian (ufw):

      bash
      sudo ufw allow 6379

    • CentOS/Fedora/RHEL (firewalld):

      bash
      sudo firewall-cmd --add-port=6379/tcp --permanent
      sudo firewall-cmd --reload

2. 安装方法

现在我们准备好安装 Redis 了。根据你的需求和偏好,可以选择以下三种方法之一:

  • 方法一:使用包管理器安装 (推荐)

    这是最简单、最快捷的安装方式。大多数 Linux 发行版的官方软件仓库都包含了 Redis,我们可以直接使用包管理器进行安装。

    • Ubuntu/Debian:

      bash
      sudo apt update
      sudo apt install redis-server

      安装完成后,Redis 服务会自动启动。

    • CentOS/Fedora/RHEL:

      ```bash

      CentOS 8/RHEL 8 需要先启用 EPEL 仓库

      sudo dnf install epel-release
      sudo dnf install redis
      ```

      安装完成后,需要手动启动 Redis 服务:

      bash
      sudo systemctl start redis
      sudo systemctl enable redis # 设置开机自启

    • openSUSE
      bash
      sudo zypper install redis
      sudo systemctl start redis
      sudo systemctl enable redis # 设置开机自启

    • Arch Linux
      bash
      sudo pacman -S redis
      sudo systemctl start redis
      sudo systemctl enable redis
  • 方法二:从源码编译安装 (更灵活)

    如果你需要安装特定版本的 Redis,或者需要自定义编译选项,可以选择从源码编译安装。

    • 下载源码

      访问 Redis 官方网站 ( https://redis.io/download ) 或 GitHub 仓库 ( https://github.com/redis/redis ) 下载最新稳定版的源码包。

      bash
      wget https://download.redis.io/releases/redis-7.2.4.tar.gz # 替换为最新版本
      tar xzf redis-7.2.4.tar.gz
      cd redis-7.2.4

    • 编译和安装

      bash
      make
      make test # 可选,运行测试
      sudo make install

      make install 命令会将 redis-serverredis-cli 等可执行文件安装到 /usr/local/bin 目录下。

    • 创建系统用户和目录
      为了安全起见, 我们建议为 Redis 服务创建一个专用的系统用户,并设置相应的数据和配置目录。
      ```bash
      sudo useradd -r -s /sbin/nologin -M redis
      sudo mkdir /var/lib/redis
      sudo chown redis:redis /var/lib/redis
      sudo mkdir /etc/redis
      sudo chown redis:redis /etc/redis

      ```

    • 配置 systemd 服务

      为了方便管理 Redis,我们可以创建一个 systemd 服务单元文件:

      bash
      sudo nano /etc/systemd/system/redis.service

      将以下内容复制到文件中 (根据实际情况修改):

      ```ini
      [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
      ```

      然后,重新加载 systemd 配置并启动 Redis 服务:

      bash
      sudo systemctl daemon-reload
      sudo systemctl start redis
      sudo systemctl enable redis

      /etc/redis/redis.conf 替换为你实际的redis 配置文件。

  • 方法三:使用 Docker 安装 (容器化)

    如果你熟悉 Docker,使用 Docker 安装 Redis 是一个非常方便的选择,可以快速部署、隔离环境,并轻松管理多个 Redis 实例。

    • 安装 Docker

      如果你的系统还没有安装 Docker,请参考 Docker 官方文档进行安装:https://docs.docker.com/engine/install/

    • 拉取 Redis 镜像

      bash
      docker pull redis:latest

    • 运行 Redis 容器

      bash
      docker run --name my-redis -d -p 6379:6379 redis:latest

      这条命令会创建一个名为 my-redis 的容器,以后台模式运行,并将容器的 6379 端口映射到主机的 6379 端口。

    • 持久化数据

      默认情况下,Redis 容器的数据存储在容器内部,容器删除后数据会丢失。为了持久化数据,我们可以使用 Docker 的数据卷:

      bash
      docker run --name my-redis -d -p 6379:6379 -v /path/to/your/data:/data redis:latest redis-server --appendonly yes

      -v /path/to/your/data:/data 将主机的 /path/to/your/data 目录挂载到容器的 /data 目录。 redis-server --appendonly yes 开启AOF持久化。

    • 连接到 Redis 容器

      bash
      docker exec -it my-redis redis-cli

3. Redis 配置

Redis 的配置文件通常位于 /etc/redis/redis.conf (包管理器安装) 或 /etc/redis.conf (源码编译安装)。我们可以使用文本编辑器打开该文件,根据需要修改配置参数。

  • 配置文件 (redis.conf)

    Redis 配置文件使用简单的键值对格式,每行一个配置项。注释以 # 开头。

  • 重要配置参数详解

    以下是一些常用的、重要的配置参数:

    • bind:绑定 IP 地址。默认值为 127.0.0.1,表示只监听本地回环地址。如果需要允许其他主机访问 Redis,可以将其设置为服务器的 IP 地址,或者设置为 0.0.0.0 表示监听所有接口。

    • port:监听端口。默认值为 6379

    • requirepass:设置密码。默认情况下,Redis 没有设置密码,为了安全起见,强烈建议设置一个强密码。

    • daemonize:后台运行。默认值为 no,表示以非守护进程模式运行。如果需要 Redis 在后台运行,可以将其设置为 yes

    • logfile:日志文件。默认值为 "",表示输出到标准输出。建议将其设置为一个文件路径,以便记录 Redis 的运行日志。

    • databases:数据库数量。默认值为 16。Redis 支持多个数据库,可以通过 SELECT 命令切换数据库。

    • maxmemory:最大内存限制。默认情况下,Redis 不限制内存使用。为了防止 Redis 占用过多内存导致系统崩溃,建议设置一个合理的内存限制,例如 1gb2gb 等。

    • maxmemory-policy:内存淘汰策略。当 Redis 达到最大内存限制时,需要根据一定的策略淘汰部分数据。常用的策略有:

      • noeviction:不淘汰,直接返回错误。
      • allkeys-lru:淘汰最近最少使用的键 (LRU)。
      • allkeys-random:随机淘汰键。
      • volatile-lru:淘汰设置了过期时间的键中最近最少使用的键。
      • volatile-random:随机淘汰设置了过期时间的键。
      • volatile-ttl:淘汰剩余生存时间最短的键。
    • appendonly:AOF 持久化。默认值为 no。AOF (Append Only File) 持久化会将 Redis 的每个写操作追加到文件末尾,以保证数据的持久性。如果需要开启 AOF 持久化,可以将其设置为 yes

    • save:RDB 持久化。默认情况下,Redis 会根据一定的条件自动触发 RDB (Redis Database) 持久化,将内存中的数据快照保存到磁盘。save 参数用于配置触发 RDB 持久化的条件,例如:

      • save 900 1:900 秒内至少有 1 个键被修改,则触发 RDB 持久化。
      • save 300 10:300 秒内至少有 10 个键被修改,则触发 RDB 持久化。
      • save 60 10000:60 秒内至少有 10000 个键被修改,则触发 RDB 持久化。

      你可以根据自己的需求配置多个 save 条件。

4. Redis 管理

安装并配置好 Redis 后,我们需要学习如何管理 Redis 服务。

  • 启动、停止、重启 Redis 服务

    • systemd (大多数现代 Linux 发行版):

      bash
      sudo systemctl start redis # 启动
      sudo systemctl stop redis # 停止
      sudo systemctl restart redis # 重启
      sudo systemctl status redis # 查看状态

    • 如果Redis是通过源码编译安装且没有配置systemd,可以直接使用redis-serverredis-cli进行启动与关闭
      ```bash
      #启动redis-server
      /usr/local/bin/redis-server /etc/redis/redis.conf
      #关闭redis-server
      /usr/local/bin/redis-cli shutdown

      ```

  • 使用 redis-cli 客户端

    redis-cli 是 Redis 自带的命令行客户端,可以用于连接到 Redis 服务器并执行各种操作。

    • 连接到 Redis 服务器

      bash
      redis-cli # 连接到本地默认端口的 Redis 服务器
      redis-cli -h 192.168.1.100 -p 6379 # 连接到指定 IP 地址和端口的 Redis 服务器
      redis-cli -h 192.168.1.100 -p 6379 -a your_password # 使用密码连接

    • 常用命令示例

      ```
      redis> SET mykey "Hello Redis" # 设置键值对
      OK
      redis> GET mykey # 获取键的值
      "Hello Redis"
      redis> INCR mycounter # 对整数值进行自增
      (integer) 1
      redis> HSET myhash field1 "value1" # 设置哈希字段
      (integer) 1
      redis> LPUSH mylist "item1" # 将元素添加到列表头部
      (integer) 1
      redis> KEYS * # 获取所有键 (生产环境慎用)
      1) "mykey"
      2) "mycounter"
      3) "myhash"
      4) "mylist"
      redis> FLUSHALL # 清空所有数据库 (生产环境慎用)
      OK
      redis> INFO # 获取 Redis 服务器信息

      Server

      redis_version:7.2.4
      ...
      redis> PING #检查服务是否正常
      PONG
      ```

  • 监控 Redis

    监控 Redis 的运行状态对于及时发现问题、优化性能至关重要。

    • INFO 命令

      INFO 命令可以获取 Redis 服务器的各种信息,包括内存使用情况、客户端连接数、命令统计等。

    • redis-stat 工具

      redis-stat 是一个第三方工具,可以实时显示 Redis 的关键指标,如内存使用率、命中率、每秒操作数等。 可以使用 gem install redis-stat 进行安装。

    • Redis Exporter + Prometheus + Grafana

      这是一种更高级、更全面的监控方案。Redis Exporter 可以将 Redis 的指标暴露给 Prometheus,Prometheus 会定期抓取这些指标并存储,Grafana 可以连接到 Prometheus 并以图形化的方式展示这些指标,并支持自定义仪表盘和告警规则。

5. Redis 安全

Redis 的安全性非常重要,如果配置不当,可能会导致数据泄露、服务器被入侵等严重后果。

  • 设置强密码

    务必使用 requirepass 参数设置一个强密码,避免使用弱密码或默认密码。

  • 绑定到安全 IP 地址

    使用 bind 参数将 Redis 绑定到安全的 IP 地址,避免将其暴露在公网上。如果确实需要通过公网访问 Redis,建议使用 VPN 或其他安全隧道。

  • 禁用危险命令

    Redis 的一些命令可能会对服务器造成安全风险,例如 FLUSHALLFLUSHDBCONFIG 等。可以通过 rename-command 参数重命名或禁用这些命令。例如:

    rename-command FLUSHALL ""
    rename-command FLUSHDB ""
    rename-command CONFIG ""

    将以上设置添加到redis.conf文件中。

  • 使用 TLS/SSL 加密

    Redis 6 及以上版本支持 TLS/SSL 加密,可以对客户端和服务器之间的通信进行加密,防止数据被窃听。配置TLS较为复杂,可以参考Redis的官方文档。

  • 定期备份数据

    定期备份 Redis 数据,以防止数据丢失。可以使用 RDB 或 AOF 持久化,或者使用第三方工具进行备份。

6. 常见问题解答

  • 如何升级 Redis?
    1. 备份当前数据(RDB 或 AOF)。
    2. 停止旧版本 Redis 服务。
    3. 安装新版本 Redis(包管理器或源码编译)。
    4. 将旧版本的配置文件(redis.conf)复制到新版本配置目录,并根据需要修改。
    5. 启动新版本 Redis 服务。
    6. 验证数据是否正常。
  • 如何卸载 Redis?
    • 包管理器安装:
    • Ubuntu/Debian: sudo apt remove --purge redis-server
    • CentOS/Fedora/RHEL: sudo yum remove redis
    • openSUSE: sudo zypper remove redis
    • 源码编译安装:
      • 删除 Redis 相关文件和目录(/usr/local/bin/redis-*/var/lib/redis/etc/redis等)。
      • 删除 systemd 服务单元文件(/etc/systemd/system/redis.service)。
      • 删除 Redis 用户(sudo userdel redis)。
  • Redis 内存不足怎么办?
    • 优化数据结构,减少内存占用。
    • 设置 maxmemorymaxmemory-policy,启用内存淘汰策略。
    • 增加服务器内存。
    • 使用 Redis 集群,将数据分片存储到多个节点。
  • Redis 连接超时怎么办?
    • 检查网络连接是否正常。
    • 检查 Redis 服务器是否过载。
    • 调整客户端的连接超时时间。
    • 检查防火墙设置。

7. 总结

本文详细介绍了在 Linux 系统上安装最新版本 Redis 的多种方法,并涵盖了配置、管理、安全等方面的最佳实践。希望本文能帮助你顺利安装和使用 Redis,构建高性能、可扩展的应用程序。记住,安全始终是第一位的,务必采取必要的安全措施保护你的 Redis 服务器和数据。

THE END