1. Redis在CentOS 8环境下的部署与清理指南
作为一款高性能的键值数据库,Redis在缓存、消息队列等场景中表现卓越。最近在CentOS 8服务器上部署Redis集群时,我重新梳理了从安装到卸载的完整操作流程。不同于Ubuntu的apt-get或Debian的dpkg,CentOS 8的dnf包管理器有其特有的操作逻辑,特别是在处理第三方仓库时更需要格外注意。下面将详细记录我在生产环境中验证过的标准化操作步骤,包含多个版本共存时的处理技巧。
重要提示:CentOS 8已于2021年底停止维护,建议考虑迁移至CentOS Stream或Rocky Linux。若必须使用,需先配置好 vault.centos.org 的仓库源。
2. 安装准备与环境配置
2.1 系统基础检查
首先确认系统架构和版本:
bash复制cat /etc/redhat-release # 确认系统版本
uname -m # 检查处理器架构
对于最小化安装的CentOS 8,需要先安装基础工具链:
bash复制dnf install -y wget tar make gcc openssl-devel systemd-devel
2.2 仓库配置方案对比
Redis官方推荐三种安装方式:
- 官方二进制包:版本最新但需要手动配置服务
- EPEL仓库:版本较旧但集成度高
- 源码编译:可定制编译参数
我选择EPEL+源码组合方案,先添加EPEL仓库:
bash复制dnf install -y epel-release
dnf config-manager --set-enabled powertools
3. 多版本安装实战
3.1 通过EPEL安装稳定版
bash复制dnf install -y redis
安装完成后验证:
bash复制rpm -qi redis # 查看包信息
redis-server --version # 检查版本
3.2 源码编译最新版
以Redis 7.0为例:
bash复制wget https://download.redis.io/releases/redis-7.0.12.tar.gz
tar xzf redis-7.0.12.tar.gz
cd redis-7.0.12
make BUILD_TLS=yes USE_SYSTEMD=yes
make install PREFIX=/usr/local/redis-7.0
关键编译参数说明:
BUILD_TLS=yes:启用TLS加密支持USE_SYSTEMD=yes:生成systemd服务文件
3.3 多版本共存配置
创建符号链接实现版本切换:
bash复制ln -s /usr/local/redis-7.0/bin/redis-server /usr/local/bin/redis-server-new
验证多版本共存:
bash复制redis-server -v # EPEL安装的版本
redis-server-new -v # 源码编译版本
4. 系统服务集成
4.1 systemd服务配置
对于源码安装的Redis,需要手动创建服务文件:
bash复制cat > /etc/systemd/system/redis-custom.service <<EOF
[Unit]
Description=Redis Custom Instance
After=network.target
[Service]
Type=notify
ExecStart=/usr/local/redis-7.0/bin/redis-server /etc/redis-custom.conf
Restart=always
[Install]
WantedBy=multi-user.target
EOF
4.2 安全加固建议
- 修改默认监听端口
- 启用requirepass配置项
- 配置防火墙规则:
bash复制firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload
5. 彻底卸载方案
5.1 清理EPEL安装版本
bash复制dnf remove -y redis
rm -rf /etc/redis
rm -rf /var/lib/redis
5.2 清除源码安装版本
bash复制rm -rf /usr/local/redis-7.0
rm /usr/local/bin/redis-server-new
5.3 残留文件清理
查找所有相关文件:
bash复制find / -name "*redis*" -exec ls -la {} \;
特别注意检查以下目录:
- /usr/local/bin
- /etc/systemd/system
- /var/log
6. 常见问题排查
6.1 服务启动失败分析
查看详细日志:
bash复制journalctl -u redis --no-pager -n 50
常见错误处理:
- 地址已占用:修改配置文件中的port参数
- 权限问题:检查selinux状态
getenforce - 内存不足:调整vm.overcommit_memory参数
6.2 性能调优参数
在/etc/sysctl.conf中添加:
bash复制vm.overcommit_memory = 1
net.core.somaxconn = 1024
执行 sysctl -p 生效
7. 数据迁移与备份
7.1 RDB持久化配置
bash复制save 900 1
save 300 10
save 60 10000
dir /var/lib/redis/persist
7.2 AOF日志配置
bash复制appendonly yes
appendfsync everysec
auto-aof-rewrite-percentage 100
7.3 在线迁移方案
使用redis-cli进行热迁移:
bash复制redis-cli -h source_host --rdb dump.rdb
scp dump.rdb target_host:/var/lib/redis/
8. 监控与维护
8.1 基础监控命令
bash复制redis-cli info # 查看全部信息
redis-cli info memory # 内存使用情况
redis-cli info stats # 操作统计
8.2 性能测试工具
bash复制redis-benchmark -t set,get -n 100000 -q
参数说明:
-t:测试的命令类型-n:总请求数-q:简化输出结果
9. 安全加固进阶
9.1 TLS加密配置
生成证书:
bash复制openssl genrsa -out redis.key 2048
openssl req -new -key redis.key -out redis.csr
openssl x509 -req -in redis.csr -signkey redis.key -out redis.crt
配置文件添加:
bash复制tls-port 6380
tls-cert-file /path/to/redis.crt
tls-key-file /path/to/redis.key
9.2 危险命令禁用
bash复制rename-command FLUSHDB ""
rename-command CONFIG ""
10. 容器化方案对比
10.1 Podman部署方案
bash复制podman run --name redis -d \
-p 6379:6379 \
-v redis_data:/data \
docker.io/library/redis:7-alpine \
redis-server --appendonly yes
10.2 传统与容器对比
| 特性 | 原生安装 | 容器方案 |
|---|---|---|
| 隔离性 | 弱 | 强 |
| 部署速度 | 中等 | 快 |
| 性能损耗 | 无 | 约5-8% |
| 维护复杂度 | 高 | 低 |
实际选择时,开发环境推荐容器方案,生产环境建议根据具体场景评估。我在内存小于4GB的测试环境中发现容器方案的内存开销反而更大,这是需要特别注意的实际情况。