在 CentOS 系统上安装 Redis 的超详细指南
Redis 是一个高性能的键值存储系统,常被用作数据库、缓存和消息队列。由于其出色的性能和丰富的数据结构支持,Redis 在现代 Web 应用和分布式系统中扮演着越来越重要的角色。本文将深入浅出地讲解如何在 CentOS Linux 发行版上安装和配置 Redis,覆盖从简单易用的包管理器安装到灵活强大的源码编译安装,并详细阐述安装后的重要配置步骤和安全注意事项。
我们将涵盖以下几个主要部分:
- Redis 简介:什么是 Redis?为什么选择 Redis?
- 为什么选择 CentOS?:CentOS 作为企业级 Linux 发行版的优势。
- 安装前准备:系统要求、用户权限、网络配置等。
- 方法一:使用 YUM 包管理器安装 Redis:最快捷简便的方式,适合快速部署和对版本要求不高的场景。
- 方法二:从源码编译安装 Redis:获取最新版本、进行定制化编译、深入理解安装过程。
- 安装后的配置与管理:讲解
redis.conf
文件,如何启动、停止、重启 Redis 服务,以及如何设置开机自启。 - 基本使用和测试:使用
redis-cli
进行简单操作验证安装成功。 - 安全加固:防火墙配置、绑定 IP、设置密码、命令重命名等。
- 常见问题及故障排除:解答安装过程中可能遇到的问题。
- 总结:回顾整个安装过程。
本文将以 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 版本通常不是最新的稳定版,可能会滞后于官方发布。
- 定制化选项较少。
安装步骤:
-
安装 Redis 软件包:
在 CentOS 7 或 CentOS 8 上,Redis 软件包通常包含在默认的软件仓库中。
bash
sudo yum install redis -y这条命令会从配置好的 YUM 仓库下载并安装 Redis 服务器及其相关文件。
-
启动 Redis 服务:
安装完成后,Redis 不会自动启动。我们需要使用
systemctl
命令来启动它。bash
sudo systemctl start redis -
验证 Redis 服务状态:
使用
systemctl status
命令检查 Redis 服务是否正在运行。bash
sudo systemctl status redis如果服务正常运行,您会看到类似
active (running)
的输出。 -
设置 Redis 开机自启:
为了确保服务器重启后 Redis 服务也能自动启动,我们需要启用其 systemd 服务。
bash
sudo systemctl enable redis这会在系统启动时创建一个指向 Redis 服务单元文件的软链接。
-
测试 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
退出客户端。 -
查找配置文件:
通过 YUM 安装的 Redis 配置文件通常位于
/etc/redis.conf
。您可以使用文本编辑器查看和修改此文件以配置 Redis。bash
sudo vi /etc/redis.conf稍后我们会在“安装后的配置与管理”部分详细介绍一些重要的配置选项。
小结: 使用 YUM 安装 Redis 是一个快速方便的选择,特别适合对 Redis 版本要求不严格、追求部署效率的场景。但如果需要最新版本或进行特定编译优化,则需要考虑从源码安装。
5. 方法二:从源码编译安装 Redis
从源码编译安装 Redis 允许您安装最新版本的 Redis,并且可以在编译过程中进行一些优化或定制。这个过程相对复杂,需要安装编译工具和依赖库。
优点:
- 可以安装最新版本的 Redis。
- 可以进行编译优化(如使用不同的内存分配器)。
- 深入理解 Redis 的安装结构和文件位置。
缺点:
- 安装过程相对繁琐。
- 需要手动解决依赖问题。
- 需要手动设置服务管理(如 systemd)。
- 后续升级需要重新编译。
安装步骤:
-
安装编译工具和依赖:
我们需要安装 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
“` -
下载 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
对比输出的校验和与官网提供的是否一致
“`
-
解压源码包:
使用
tar
命令解压下载的.tar.gz
文件。bash
cd /opt
sudo tar -xzf redis-${REDIS_VERSION}.tar.gz解压后会生成一个名为
redis-${REDIS_VERSION}
的目录。 -
编译源码:
进入解压后的目录,并执行
make
命令进行编译。bash
cd redis-${REDIS_VERSION}
sudo make这个过程会编译 Redis 服务器程序、客户端程序以及其他一些工具。如果系统安装了
jemalloc-devel
,make
会自动检测并使用 jemalloc。(可选)运行测试套件: 编译完成后,强烈建议运行测试套件以确保编译的程序没有问题。这需要安装
tcl
。bash
sudo make test测试可能需要一些时间。如果所有测试都通过,说明编译是成功的。
-
安装编译好的程序:
编译好的可执行文件位于
src
目录下。执行make install
命令将这些文件安装到系统路径下。bash
sudo make install默认情况下,
make install
会将redis-server
、redis-cli
等二进制文件安装到/usr/local/bin
目录下,这个目录通常已经在系统的 PATH 环境变量中。 -
设置 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 ```
-
测试 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
:当daemonize
为yes
时,指定 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
连接到本地,指定密码
redis-cli -a your_password
连接到指定IP、端口和密码
redis-cli -h
“`
常用测试命令:
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 时,安全性是至关重要的。以下是一些基本的安全加固措施:
-
配置防火墙:
默认情况下,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 服务是黑客最喜欢攻击的目标之一。
-
绑定 IP 地址:
修改redis.conf
中的bind
指令。如果 Redis 只供本地应用使用,保持bind 127.0.0.1
。如果需要局域网内访问,绑定到内网 IP。如果需要跨网络访问,必须同时设置强密码并考虑其他安全措施。 -
设置访问密码:
修改redis.conf
中的requirepass
指令,设置一个复杂且难以猜测的密码。客户端连接时必须使用AUTH your_password
命令进行认证。“`conf
redis.conf
requirepass your_very_strong_password
“`修改配置文件后,记得重启 Redis 服务。
-
命令重命名或禁用:
某些命令如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 服务。
-
以非 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
参数提供密码。
- 确认 Redis 服务正在运行 (
- 源码编译时
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 服务!