如何在 CentOS 安装 Redis – wiki基地


在 CentOS 系统上安装 Redis 的超详细指南

Redis 是一个高性能的键值存储系统,常被用作数据库、缓存和消息队列。由于其出色的性能和丰富的数据结构支持,Redis 在现代 Web 应用和分布式系统中扮演着越来越重要的角色。本文将深入浅出地讲解如何在 CentOS Linux 发行版上安装和配置 Redis,覆盖从简单易用的包管理器安装到灵活强大的源码编译安装,并详细阐述安装后的重要配置步骤和安全注意事项。

我们将涵盖以下几个主要部分:

  1. Redis 简介:什么是 Redis?为什么选择 Redis?
  2. 为什么选择 CentOS?:CentOS 作为企业级 Linux 发行版的优势。
  3. 安装前准备:系统要求、用户权限、网络配置等。
  4. 方法一:使用 YUM 包管理器安装 Redis:最快捷简便的方式,适合快速部署和对版本要求不高的场景。
  5. 方法二:从源码编译安装 Redis:获取最新版本、进行定制化编译、深入理解安装过程。
  6. 安装后的配置与管理:讲解 redis.conf 文件,如何启动、停止、重启 Redis 服务,以及如何设置开机自启。
  7. 基本使用和测试:使用 redis-cli 进行简单操作验证安装成功。
  8. 安全加固:防火墙配置、绑定 IP、设置密码、命令重命名等。
  9. 常见问题及故障排除:解答安装过程中可能遇到的问题。
  10. 总结:回顾整个安装过程。

本文将以 CentOS 7 和 CentOS 8 为主要目标系统,但其中的原理和步骤同样适用于其他基于 RHEL 的发行版,如 Rocky Linux 或 AlmaLinux。

1. Redis 简介

Redis(Remote Dictionary Server)是一个开源的、使用 C 语言编写的、支持网络、可基于内存或持久化的日志型、Key-Value 数据库,并提供多种语言的 API。与传统的基于磁盘的数据库不同,Redis 将数据存储在内存中,这使得它具有极高的数据读写速度。

Redis 不仅仅是一个简单的 Key-Value 存储,它还支持丰富的数据结构,包括:

  • 字符串 (Strings):最基本的数据类型,可以存储文本或二进制数据。
  • 列表 (Lists):有序的字符串集合,可以从头部或尾部添加/删除元素。
  • 集合 (Sets):无序的、唯一的字符串集合,支持交集、并集、差集等操作。
  • 有序集合 (Sorted Sets):有序的、唯一的字符串集合,每个成员都会关联一个分数(score),通过分数进行排序。
  • 哈希 (Hashes):键值对的集合,适合存储对象。
  • 位图 (Bitmaps):可以对字符串类型进行位操作,非常节省空间。
  • HyperLogLog:用于估算集合的基数(成员数量)。
  • 地理空间索引 (Geospatial Indexing):用于存储地理位置信息并进行附近查找。

由于其高速读写能力和灵活的数据结构,Redis 被广泛应用于:

  • 缓存:作为数据库的前端缓存,显著提高应用响应速度。
  • 会话存储:存储用户会话信息。
  • 消息队列:通过列表实现简单的生产者-消费者模型。
  • 排行榜:利用有序集合实现实时排行榜。
  • 实时分析:快速处理和查询实时数据。

2. 为什么选择 CentOS?

CentOS(Community Enterprise Operating System)是基于 Red Hat Enterprise Linux (RHEL) 构建的开源操作系统。它以其稳定性、安全性和长期的技术支持而闻名,是许多企业级应用和服务器环境的首选平台。将 Redis 部署在 CentOS 上,可以充分利用 CentOS 平台的这些优势,为 Redis 提供一个稳定可靠的运行环境。

尽管 CentOS 项目已进行策略调整(CentOS Linux 8 已结束生命周期,未来重心转向 CentOS Stream),但 CentOS 7 仍有较长的维护周期,并且大量的现有系统和新的部署仍然选择 CentOS 7 或其衍生版本(如 Rocky Linux、AlmaLinux)。因此,掌握在 CentOS 上安装 Redis 的方法仍然非常重要和实用。

3. 安装前准备

在开始安装 Redis 之前,我们需要确保系统满足一些基本要求:

  • 操作系统:一个运行中的 CentOS 服务器实例(CentOS 7 或 CentOS 8)。
  • 用户权限:拥有 root 用户权限,或者一个可以通过 sudo 执行管理命令的用户。
  • 网络连接:服务器需要连接互联网以下载必要的软件包或源码。
  • 系统更新:建议在安装任何新软件之前更新系统,以获取最新的安全补丁和软件包依赖。

“`bash

使用 root 用户或 sudo 执行

sudo yum update -y
“`

这将更新系统中所有已安装的软件包到最新版本。-y 参数会自动确认所有提示,无需手动输入 yes

4. 方法一:使用 YUM 包管理器安装 Redis

这是在 CentOS 上安装 Redis 最简单快捷的方法。YUM (Yellowdog Updater, Modified) 是 CentOS 的默认包管理器,它可以自动处理软件包的下载、安装和依赖关系。

优点:

  • 安装过程简单,只需几条命令。
  • 自动处理依赖关系。
  • 卸载方便。
  • 通常会集成到系统的服务管理中(如 systemd)。

缺点:

  • 通过 YUM 安装的 Redis 版本通常不是最新的稳定版,可能会滞后于官方发布。
  • 定制化选项较少。

安装步骤:

  1. 安装 Redis 软件包:

    在 CentOS 7 或 CentOS 8 上,Redis 软件包通常包含在默认的软件仓库中。

    bash
    sudo yum install redis -y

    这条命令会从配置好的 YUM 仓库下载并安装 Redis 服务器及其相关文件。

  2. 启动 Redis 服务:

    安装完成后,Redis 不会自动启动。我们需要使用 systemctl 命令来启动它。

    bash
    sudo systemctl start redis

  3. 验证 Redis 服务状态:

    使用 systemctl status 命令检查 Redis 服务是否正在运行。

    bash
    sudo systemctl status redis

    如果服务正常运行,您会看到类似 active (running) 的输出。

  4. 设置 Redis 开机自启:

    为了确保服务器重启后 Redis 服务也能自动启动,我们需要启用其 systemd 服务。

    bash
    sudo systemctl enable redis

    这会在系统启动时创建一个指向 Redis 服务单元文件的软链接。

  5. 测试 Redis 连接:

    Redis 安装包通常包含一个客户端工具 redis-cli,我们可以用它来连接到本地运行的 Redis 服务器并执行一些基本命令。

    bash
    redis-cli

    连接成功后,您会看到 Redis 提示符 127.0.0.1:6379>。尝试执行一个简单的 PING 命令:

    bash
    127.0.0.1:6379> PING

    如果返回 PONG,说明 Redis 服务器正常工作。您可以输入 exit 或按下 Ctrl+C 退出客户端。

  6. 查找配置文件:

    通过 YUM 安装的 Redis 配置文件通常位于 /etc/redis.conf。您可以使用文本编辑器查看和修改此文件以配置 Redis。

    bash
    sudo vi /etc/redis.conf

    稍后我们会在“安装后的配置与管理”部分详细介绍一些重要的配置选项。

小结: 使用 YUM 安装 Redis 是一个快速方便的选择,特别适合对 Redis 版本要求不严格、追求部署效率的场景。但如果需要最新版本或进行特定编译优化,则需要考虑从源码安装。

5. 方法二:从源码编译安装 Redis

从源码编译安装 Redis 允许您安装最新版本的 Redis,并且可以在编译过程中进行一些优化或定制。这个过程相对复杂,需要安装编译工具和依赖库。

优点:

  • 可以安装最新版本的 Redis。
  • 可以进行编译优化(如使用不同的内存分配器)。
  • 深入理解 Redis 的安装结构和文件位置。

缺点:

  • 安装过程相对繁琐。
  • 需要手动解决依赖问题。
  • 需要手动设置服务管理(如 systemd)。
  • 后续升级需要重新编译。

安装步骤:

  1. 安装编译工具和依赖:

    我们需要安装 C 编译器(GCC)、make 工具以及其他一些必要的开发库。

    “`bash

    安装开发工具组,通常包含 GCC, make 等

    sudo yum groupinstall “Development Tools” -y

    Redis 推荐使用 jemalloc 作为内存分配器,可以提高性能

    安装 jemalloc 开发库

    sudo yum install jemalloc-devel -y

    (可选) 如果想运行 make test,需要安装 tcl

    sudo yum install tcl -y
    “`

  2. 下载 Redis 源码:

    访问 Redis 官方网站(https://redis.io/download)获取最新稳定版的下载链接。使用 wget 命令下载源码包到服务器。

    “`bash

    示例:下载最新稳定版 (请根据官网获取最新链接替换下面的 URL)

    访问 https://redis.io/download 获取当前最新版本号,例如 7.2.4

    REDIS_VERSION=”7.2.4″
    cd /opt # 通常将源码包下载到 /opt 或 /usr/local/src
    sudo wget http://download.redis.io/releases/redis-${REDIS_VERSION}.tar.gz

    验证下载文件的完整性 (可选但推荐)

    官方下载页面通常会提供 SHA256 校验和,使用 sha256sum 命令进行验证

    sudo sha256sum redis-${REDIS_VERSION}.tar.gz

    对比输出的校验和与官网提供的是否一致

    “`

  3. 解压源码包:

    使用 tar 命令解压下载的 .tar.gz 文件。

    bash
    cd /opt
    sudo tar -xzf redis-${REDIS_VERSION}.tar.gz

    解压后会生成一个名为 redis-${REDIS_VERSION} 的目录。

  4. 编译源码:

    进入解压后的目录,并执行 make 命令进行编译。

    bash
    cd redis-${REDIS_VERSION}
    sudo make

    这个过程会编译 Redis 服务器程序、客户端程序以及其他一些工具。如果系统安装了 jemalloc-develmake 会自动检测并使用 jemalloc。

    (可选)运行测试套件: 编译完成后,强烈建议运行测试套件以确保编译的程序没有问题。这需要安装 tcl

    bash
    sudo make test

    测试可能需要一些时间。如果所有测试都通过,说明编译是成功的。

  5. 安装编译好的程序:

    编译好的可执行文件位于 src 目录下。执行 make install 命令将这些文件安装到系统路径下。

    bash
    sudo make install

    默认情况下,make install 会将 redis-serverredis-cli 等二进制文件安装到 /usr/local/bin 目录下,这个目录通常已经在系统的 PATH 环境变量中。

  6. 设置 Redis 服务(推荐使用 Systemd):

    手动编译安装的 Redis 不会自动创建服务脚本。在现代 CentOS 系统上,推荐使用 Systemd 来管理 Redis 服务。这需要手动创建一些目录、用户以及 Systemd service 单元文件。

    a. 创建 Redis 用户和组: 为了安全起见,不建议使用 root 用户运行 Redis。创建一个专门的 redis 用户和组。

    ```bash
    sudo adduser --system --no-create-home --shell /sbin/nologin redis
    ```
    
    `--system` 创建系统用户,`--no-create-home` 不创建用户主目录,`--shell /sbin/nologin` 设置用户不能登录 shell。
    

    b. 创建数据和日志目录: Redis 需要一个目录来存放持久化文件(RDB 或 AOF)和日志文件。将这些目录的权限赋给 redis 用户。

    ```bash
    sudo mkdir /var/lib/redis      # 数据目录
    sudo mkdir /var/log/redis      # 日志目录
    sudo chown -R redis:redis /var/lib/redis
    sudo chown -R redis:redis /var/log/redis
    ```
    

    c. 复制配置文件: 将源码目录中提供的示例配置文件复制到标准位置,并根据需要修改。

    ```bash
    # 假设您仍在源码目录下 /opt/redis-${REDIS_VERSION}
    sudo mkdir /etc/redis
    sudo cp redis.conf /etc/redis/
    ```
    

    d. 修改配置文件 (/etc/redis/redis.conf):

    使用文本编辑器打开 `/etc/redis/redis.conf` 文件,进行关键修改:
    
    *   **daemonize yes**:将 `daemonize no` 改为 `daemonize yes`,让 Redis 作为守护进程在后台运行。
    *   **pidfile /var/run/redis_6379.pid**:设置 PID 文件路径。确保 `redis` 用户对 `/var/run` 或指定目录有写入权限(Systemd 通常会在启动时处理 `/var/run` 或 `/run`)。
    *   **logfile /var/log/redis/redis.log**:设置日志文件路径。确保 `redis` 用户对 `/var/log/redis` 目录有写入权限(我们之前已经设置了)。
    *   **dir /var/lib/redis**:设置 Redis 工作目录,持久化文件将保存在这里。确保 `redis` 用户对 `/var/lib/redis` 目录有写入权限(我们之前已经设置了)。
    *   **bind 127.0.0.1**:默认绑定到本地环回地址,只允许本地连接。如果需要外部访问,需要修改此项,并注意安全性。
    *   **protected-mode yes**:开启保护模式,如果未设置密码且未绑定特定 IP,只允许本地连接。保持默认是安全的。
    *   **port 6379**:Redis 默认监听端口。
    
    ```bash
    sudo vi /etc/redis/redis.conf
    ```
    
    找到并修改上述行,保存并关闭文件。
    

    e. 创建 Systemd Service 单元文件:

    创建一个新的文件 `/etc/systemd/system/redis.service`,并添加以下内容:
    
    ```bash
    sudo vi /etc/systemd/system/redis.service
    ```
    
    将以下内容复制到文件中:
    
    ```ini
    [Unit]
    Description=Redis persistent key-value database
    After=network.target
    
    [Service]
    Type=forking
    User=redis
    Group=redis
    PIDFile=/var/run/redis_6379.pid
    ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
    ExecStop=/usr/local/bin/redis-cli shutdown
    ExecReload=/usr/local/bin/redis-cli reload
    TimeoutStartSec=300
    Restart=on-failure
    RestartSec=5
    WorkingDirectory=/var/lib/redis
    LimitNOFILE=100000
    
    [Install]
    WantedBy=multi-user.target
    ```
    
    **解释 Systemd 单元文件的关键部分:**
    
    *   `[Unit]`:单元的描述和依赖关系。
        *   `Description`: 简短描述。
        *   `After=network.target`: 指定在网络服务启动后才启动 Redis。
    *   `[Service]`:定义服务的行为。
        *   `Type=forking`: 指定服务类型是守护进程(在 `ExecStart` 命令中指定了 `daemonize yes`)。Systemd 会等待主进程 fork 后退出。
        *   `User=redis`: 指定运行服务的用户。
        *   `Group=redis`: 指定运行服务的组。
        *   `PIDFile=/var/run/redis_6379.pid`: 指定服务的 PID 文件路径,需要与 `redis.conf` 中的设置一致。
        *   `ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf`: 启动服务的命令。指向编译安装的 `redis-server` 可执行文件,并指定配置文件的路径。
        *   `ExecStop=/usr/local/bin/redis-cli shutdown`: 停止服务的命令。使用 `redis-cli` 连接到服务器并发送 `shutdown` 命令。
        *   `ExecReload=/usr/local/bin/redis-cli reload`: 重新加载配置的命令(Redis 不支持优雅地重新加载所有配置,此命令在此 context 下可能不如重启服务常用,或者可以自定义一个脚本来执行更复杂的重载逻辑,这里示例是发送 `reload` 命令,如果 Redis 版本不支持此命令,需要修改或删除此行)。**注意:标准的 `redis-cli reload` 命令不存在,通常需要发送 `shutdown` 命令后由 Systemd 的 `Restart` 指令负责重启。更严谨的做法是将 `ExecReload` 改为发送 `SIGUSR1` 信号给主进程,或者直接省略 `ExecReload`。对于大多数配置更改,安全起见建议重启服务。** 如果保持这个 `ExecReload`,请注意其局限性。一个更可靠的 `ExecReload` 可能是 `ExecReload=/bin/kill -s HUP $MAINPID`,但 Redis 对 HUP 信号的处理也有限,最好的方法是重启。为了简单和兼容性,可以暂时保留或删除此行。
        *   `TimeoutStartSec=300`: 服务启动的超时时间。
        *   `Restart=on-failure`: 当服务以非零状态退出时自动重启。
        *   `RestartSec=5`: 重启服务前等待的时间。
        *   `WorkingDirectory=/var/lib/redis`: 设置服务的工作目录,这与 `redis.conf` 中的 `dir` 设置通常是一致的,但在此处设置可以提供额外的保证。
        *   `LimitNOFILE=100000`: 增加文件描述符限制,Redis 在处理大量连接时可能需要较高的限制。
    *   `[Install]`:定义服务如何被安装到启动目标中。
        *   `WantedBy=multi-user.target`: 指定服务应在多用户运行级别启动时被激活。
    
    保存并关闭文件。
    

    f. 重新加载 systemd 配置:

    创建或修改了 Systemd 单元文件后,需要重新加载 Systemd 配置 daemon。
    
    ```bash
    sudo systemctl daemon-reload
    ```
    

    g. 启动 Redis 服务:

    现在可以使用 `systemctl` 命令启动 Redis 服务了。
    
    ```bash
    sudo systemctl start redis
    ```
    

    h. 验证 Redis 服务状态:

    检查服务是否正常运行。
    
    ```bash
    sudo systemctl status redis
    ```
    
    应该显示 `active (running)`。
    

    i. 设置 Redis 开机自启:

    ```bash
    sudo systemctl enable redis
    ```
    
  7. 测试 Redis 连接:

    使用 redis-cli 连接到 Redis 服务器进行测试。因为是通过源码安装到 /usr/local/bin,通常可以直接运行。

    bash
    redis-cli

    或者如果遇到 PATH 问题,使用完整路径:

    bash
    /usr/local/bin/redis-cli

    连接后,执行 PING 命令:

    bash
    127.0.0.1:6379> PING
    PONG

    确认服务正常。

小结: 从源码编译安装 Redis 提供了最大的灵活性和最新版本支持,但需要更多的手动配置步骤,特别是 Systemd 服务管理。理解这些步骤对于深入了解 Redis 的运行机制和进行高级配置非常重要。

6. 安装后的配置与管理

无论是通过 YUM 还是源码安装,理解并修改 Redis 的配置文件 (redis.conf) 都是至关重要的。这个文件控制着 Redis 的各种行为,包括网络设置、持久化选项、内存管理、安全设置等。

重要配置项讲解(/etc/redis.conf):

  • bind <ip>:指定 Redis 服务器监听的 IP 地址。默认为 127.0.0.1,只允许本地连接。如果需要远程连接,可以将其设置为服务器的某个具体 IP 地址或 0.0.0.0(监听所有可用 IP),但设置为 0.0.0.0 时必须同时启用密码或配置防火墙,否则非常不安全。
  • protected-mode yes:保护模式。开启时,如果 Redis 没有配置密码 (requirepass) 且没有绑定特定 IP,将只允许本地连接。默认开启,建议保持开启除非您明确知道风险并已采取其他安全措施。
  • port 6379:Redis 服务器监听的端口。默认为 6379。
  • daemonize yes/no:决定 Redis 是否作为守护进程在后台运行。通过 YUM 安装时通常默认为 yes 并由 Systemd 管理。源码安装并配置 Systemd 服务时,通常在配置文件中设为 yes,并在 Systemd 单元文件中指定 Type=forking
  • pidfile /path/to/redis.pid:当 daemonizeyes 时,指定 Redis 进程的 PID 文件路径。
  • logfile /path/to/redis.log:指定 Redis 日志文件的路径。
  • dir /path/to/data:指定 Redis 的工作目录。持久化文件(RDB 和 AOF)将保存在此目录。
  • save <seconds> <changes>:配置 RDB 持久化。例如 save 900 1 表示在 900 秒内至少有 1 个 key 发生变化时执行一次快照。可以配置多个 save 规则。要禁用 RDB 持久化,可以注释掉所有 save 行。
  • dbfilename dump.rdb:RDB 持久化文件的名称。
  • appendonly yes/no:是否开启 AOF (Append Only File) 持久化。开启后,Redis 会将所有写操作命令追加到 AOF 文件中,通过重放 AOF 文件来恢复数据。
  • appendfilename "appendonly.aof":AOF 文件的名称。
  • appendfsync everysec:配置 AOF 的同步策略。always (每次写操作都同步,最安全但性能最低),everysec (每秒同步一次,兼顾安全和性能,默认值),no (不主动同步,交由操作系统决定,最快但可能丢失数据)。
  • requirepass your_password:设置连接 Redis 所需的密码。强烈建议在生产环境中设置密码,特别是在 Redis 绑定非本地 IP 时。
  • maxmemory <bytes>:设置 Redis 可使用的最大内存量。当达到限制时,Redis 会根据淘汰策略移除 key。
  • maxmemory-policy noeviction:当达到最大内存限制时的淘汰策略。noeviction (不删除 key,新的写操作会报错),allkeys-lru (移除最近最少使用的 key),volatile-lru (移除设置了过期时间的 key 中最近最少使用的),等等。
  • tcp-keepalive 300:发送 TCP Keepalive 探测包的频率(秒)。有助于检测死连接。
  • loglevel notice:日志级别。可以是 debug, verbose, notice, warning

管理 Redis 服务:

无论是通过 YUM 安装还是手动配置 Systemd 服务,都可以使用 systemctl 命令来管理 Redis 服务:

  • 启动服务: sudo systemctl start redis
  • 停止服务: sudo systemctl stop redis
  • 重启服务: sudo systemctl restart redis
  • 查看服务状态: sudo systemctl status redis
  • 设置开机自启: sudo systemctl enable redis
  • 禁用开机自启: sudo systemctl disable redis
  • 查看服务日志: sudo journalctl -u redis (对于使用 systemd 启动的服务) 或查看 logfile 指定的日志文件。

7. 基本使用和测试

安装并启动 Redis 后,可以使用 redis-cli 客户端工具进行连接和测试。

连接到 Redis 服务器:

bash
redis-cli

如果 Redis 运行在非默认端口或远程服务器上,或者设置了密码,需要指定连接参数:

“`bash

连接到指定IP和端口

redis-cli -h -p

连接到本地,指定密码

redis-cli -a your_password

连接到指定IP、端口和密码

redis-cli -h -p -a your_password
“`

常用测试命令:

  • PING:检查服务器是否运行。返回 PONG
  • SET mykey "Hello Redis":设置一个字符串键值对。返回 OK
  • GET mykey:获取键 mykey 的值。返回 "Hello Redis"
  • DEL mykey:删除键 mykey。返回被删除 key 的数量。
  • INFO:获取 Redis 服务器的各种信息(如版本、运行状态、内存使用、客户端连接数等)。信息非常详细,是排查问题的重要工具。
  • DBSIZE:获取当前数据库中 key 的数量。
  • KEYS *:获取当前数据库中所有的 key。注意:在生产环境中慎用 KEYS *,它会遍历所有 key,可能导致服务器阻塞。
  • SHUTDOWN:优雅地关闭 Redis 服务器。

8. 安全加固

在生产环境中部署 Redis 时,安全性是至关重要的。以下是一些基本的安全加固措施:

  1. 配置防火墙:
    默认情况下,Redis 监听端口 6379。使用防火墙只允许受信任的 IP 地址访问此端口。在 CentOS 7/8 上通常使用 firewalld

    “`bash

    允许特定IP访问 Redis 端口 (替换 为实际IP)

    sudo firewall-cmd –permanent –add-rich-rule=’rule family=”ipv4″ source address=”” port port=”6379″ protocol=”tcp” accept’

    或者,只允许本地访问 (如果 bind 127.0.0.1)

    确保防火墙不阻止本地流量

    或者,允许特定区域的机器访问 (如果机器在 internal 区域)

    sudo firewall-cmd –permanent –zone=internal –add-port=6379/tcp

    重新加载防火墙规则

    sudo firewall-cmd –reload
    “`

    切勿在未加任何限制(如未设置密码、未绑定特定IP)的情况下将 Redis 端口暴露到公网!公开的 Redis 服务是黑客最喜欢攻击的目标之一。

  2. 绑定 IP 地址:
    修改 redis.conf 中的 bind 指令。如果 Redis 只供本地应用使用,保持 bind 127.0.0.1。如果需要局域网内访问,绑定到内网 IP。如果需要跨网络访问,必须同时设置强密码并考虑其他安全措施。

  3. 设置访问密码:
    修改 redis.conf 中的 requirepass 指令,设置一个复杂且难以猜测的密码。客户端连接时必须使用 AUTH your_password 命令进行认证。

    “`conf

    redis.conf

    requirepass your_very_strong_password
    “`

    修改配置文件后,记得重启 Redis 服务。

  4. 命令重命名或禁用:
    某些命令如 KEYS, FLUSHALL, FLUSHDB, CONFIG 等在生产环境中非常危险,可能会导致性能问题或数据丢失。可以通过 rename-command 指令将其重命名为复杂名称或设置为空字符串来禁用:

    “`conf

    redis.conf

    rename-command CONFIG “” # 禁用 CONFIG 命令
    rename-command FLUSHALL “” # 禁用 FLUSHALL 命令
    rename-command FLUSHDB “” # 禁用 FLUSHDB 命令

    rename-command KEYS myprivatekeyscommand # 将 KEYS 命令重命名

    “`

    修改配置文件后,记得重启 Redis 服务。

  5. 以非 root 用户运行:
    如源码安装部分所述,创建一个专门的 redis 用户,并使用该用户运行 Redis 进程,限制其文件访问权限,这是标准的服务器安全实践。

9. 常见问题及故障排除

  • Redis 服务无法启动:
    • 检查配置文件路径是否正确 (ExecStart 参数)。
    • 检查配置文件语法是否有误,可以使用 redis-server --test-check-synopsis 或直接尝试用命令行启动 redis-server /etc/redis/redis.conf 查看报错信息。
    • 检查日志文件 (logfile 指定的路径) 或使用 journalctl -u redis 查看 Systemd 服务日志获取详细错误信息。
    • 检查 PID 文件、数据目录、日志目录的路径是否正确,以及运行 Redis 的用户是否对这些目录有写入权限。
    • 检查端口是否被其他进程占用 (sudo netstat -tulnp | grep 6379)。
  • redis-cli 连接失败:
    • 确认 Redis 服务正在运行 (systemctl status redis)。
    • 检查防火墙是否阻止了连接。如果是远程连接,确保防火墙允许客户端 IP 访问 Redis 端口。
    • 检查 redis.conf 中的 bind 设置。如果绑定到 127.0.0.1,则只能从本地连接。如果绑定到特定 IP 或 0.0.0.0,确保绑定 IP 是服务器可用的 IP。
    • 如果设置了密码 (requirepass),连接时必须使用 -a 参数提供密码。
  • 源码编译时 make 报错:
    • 通常是因为缺少依赖的开发库(如 GCC、make、jemalloc-devel、tcl 等)。回顾“安装编译工具和依赖”步骤,确保所有必需的软件包都已安装。
    • 检查错误输出,根据错误信息搜索解决方案。
  • 持久化文件没有生成或数据丢失:
    • 检查 redis.conf 中的 save 规则是否配置正确,或者 appendonly yes 是否开启。
    • 检查 dir 指定的数据目录是否存在,并且运行 Redis 的用户对该目录有写入权限。
    • 检查 Redis 是否因达到 maxmemory 限制而触发了 key 淘汰,并且淘汰策略不是 noeviction

10. 总结

本文详细介绍了在 CentOS 系统上安装 Redis 的两种主要方法:使用 YUM 包管理器和从源码编译。YUM 安装简单快速,适合多数场景;源码安装灵活强大,适合需要最新版本或定制编译的用户。

无论采用哪种方法,安装后的配置管理和安全加固都是必不可少的步骤。我们详细讲解了 redis.conf 文件中的重要配置项,如何使用 systemctl 管理 Redis 服务,以及如何通过防火墙、绑定 IP、设置密码和命令重命名等方式增强 Redis 的安全性。

通过遵循本指南的步骤,您应该能够在 CentOS 服务器上成功安装、配置和运行 Redis,并为其提供一个相对安全稳定的环境。请记住,Redis 是一个强大的工具,但在生产环境中部署时务必重视安全和持久化配置,以确保数据的安全性和服务的稳定性。

希望这篇详细指南能帮助您顺利在 CentOS 上搭建起您的 Redis 服务!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部