1. 为什么选择CentOS 8安装Redis?
Redis作为当前最流行的内存数据库之一,在缓存、消息队列、会话存储等场景中表现优异。而CentOS 8作为企业级Linux发行版,其稳定性和长期支持周期(2029年5月31日终止维护)使其成为生产环境的首选。这个组合特别适合需要高可靠性的业务场景,比如电商秒杀系统或实时数据分析平台。
我在实际运维工作中发现,相比Ubuntu等发行版,CentOS 8的软件包管理更严谨,默认防火墙规则更严格,这对数据库服务的安全部署非常有利。不过需要注意的是,CentOS 8默认的软件仓库中Redis版本较旧(目前是5.0.3),而Redis官方最新稳定版已到7.0.x,这就需要我们掌握源码编译安装的方法。
重要提示:CentOS 8已于2021年12月31日停止维护,建议新项目考虑Rocky Linux或AlmaLinux等替代发行版。若必须使用CentOS 8,需先配置好EPEL和PowerTools仓库。
2. 环境准备与依赖安装
2.1 系统基础配置
首先确保系统是最新状态:
sudo dnf update -y sudo reboot # 内核更新后建议重启安装基础开发工具链:
sudo dnf groupinstall "Development Tools" -y sudo dnf install -y tcl gcc make openssl-devel systemd-devel这里特别要安装tcl,因为Redis测试套件需要它。而systemd-devel则是为了支持将Redis注册为系统服务。
2.2 配置阿里云YUM源(国内用户)
由于CentOS官方源在国内访问较慢,建议替换为阿里云镜像:
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo sudo dnf makecache3. 两种Redis安装方案详解
3.1 方案一:通过YUM安装(适合快速部署)
sudo dnf install -y redis这种方式的优点是简单快捷,自动解决依赖关系,但缺点是版本较旧(CentOS 8仓库中目前是5.0.3)。安装完成后可以通过以下命令验证:
redis-server --version3.2 方案二:源码编译安装(推荐生产环境使用)
以安装Redis 7.0.11为例:
wget https://download.redis.io/releases/redis-7.0.11.tar.gz tar xzf redis-7.0.11.tar.gz cd redis-7.0.11 make BUILD_TLS=yes sudo make install这里BUILD_TLS=yes参数启用了TLS支持,对于需要加密连接的生产环境非常重要。编译完成后,建议运行测试套件:
make test常见问题:若编译时报错"zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h",可尝试
make MALLOC=libc使用系统内存分配器替代jemalloc。
4. 系统服务配置与管理
4.1 创建专用用户和目录
sudo useradd -r -s /sbin/nologin redis sudo mkdir /var/lib/redis sudo chown redis:redis /var/lib/redis4.2 配置文件优化
从源码包复制默认配置:
sudo mkdir /etc/redis sudo cp redis-7.0.11/redis.conf /etc/redis/关键配置项修改建议:
bind 127.0.0.1 ::1 # 限制只监听本地 protected-mode yes port 6379 daemonize yes pidfile /var/run/redis_6379.pid logfile "/var/log/redis/redis.log" dir /var/lib/redis requirepass yourStrongPassword # 务必设置密码4.3 创建Systemd服务单元
创建/etc/systemd/system/redis.service文件:
[Unit] Description=Redis persistent key-value database 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然后启用服务:
sudo systemctl daemon-reload sudo systemctl enable --now redis5. Redis卸载完全指南
5.1 卸载YUM安装的Redis
sudo systemctl stop redis sudo dnf remove -y redis sudo rm -rf /etc/redis /var/lib/redis /var/log/redis5.2 卸载源码编译的Redis
sudo systemctl stop redis sudo rm /usr/local/bin/redis-* sudo rm -rf /etc/redis /var/lib/redis /var/log/redis sudo rm /etc/systemd/system/redis.service sudo systemctl daemon-reload5.3 残留清理检查
执行以下命令确认无残留:
sudo find / -name "*redis*" # 检查所有相关文件 ps aux | grep redis # 确认无redis进程6. 生产环境优化建议
6.1 内存管理配置
在/etc/redis/redis.conf中添加:
maxmemory 4gb # 根据服务器内存调整 maxmemory-policy allkeys-lru6.2 持久化策略选择
根据业务需求选择RDB或AOF:
# RDB快照配置 save 900 1 save 300 10 save 60 10000 # AOF配置 appendonly yes appendfsync everysec6.3 安全加固措施
- 修改默认端口:
port 6380- 禁用危险命令:
rename-command FLUSHDB "" rename-command FLUSHALL "" rename-command CONFIG ""- 配置防火墙规则:
sudo firewall-cmd --permanent --add-port=6380/tcp sudo firewall-cmd --reload7. 常见问题排查
7.1 启动失败排查步骤
- 检查日志:
journalctl -u redis -f- 测试配置文件:
redis-server /etc/redis/redis.conf --test- 检查端口占用:
ss -tulnp | grep 63797.2 性能问题诊断
使用内置基准测试工具:
redis-benchmark -h 127.0.0.1 -p 6379 -a yourpassword -n 100000 -c 50关键指标监控:
redis-cli info memory redis-cli info stats7.3 连接问题处理
检查网络连通性:
telnet 127.0.0.1 6379验证认证配置:
redis-cli -h 127.0.0.1 -p 6370 AUTH yourpassword我在实际运维中发现,大多数连接问题源于防火墙设置或密码认证配置错误。特别是在使用Docker等容器技术时,容易忽略网络命名空间的隔离特性。