接上文(Ubuntu部分请移步主页查看)。内容很多很全面,按需求查看即可~
Ubuntu/CentOS 服务器安装 Redis 超全面指南

二、CentOS 系统安装 Redis

2.1 环境准备

本教程基于 CentOS 7/8/9 版本。首先更新系统:

# CentOS 7
sudo yum update -y

# CentOS 8/9
sudo dnf update -y

2.2 方法一:YUM/DNF 安装(推荐)

CentOS 7 安装:

# 安装 EPEL 源
sudo yum install epel-release -y

# 安装 Redis
sudo yum install redis -y

CentOS 8/9 安装:

# 直接安装
sudo dnf install redis -y

验证安装:

# 查看版本
redis-server --version

# 查看服务状态
sudo systemctl status redis

2.3 方法二:源码编译安装

步骤 1:安装编译工具

# CentOS 7
sudo yum groupinstall "Development Tools" -y
sudo yum install tcl wget -y

# CentOS 8/9
sudo dnf groupinstall "Development Tools" -y
sudo dnf install tcl wget -y

步骤 2:下载并编译

cd /tmp
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

# 编译安装
make
make test
sudo make install

步骤 3:配置 Redis

# 创建目录
sudo mkdir -p /etc/redis
sudo mkdir -p /var/lib/redis
sudo mkdir -p /var/log/redis

# 复制配置文件
sudo cp redis.conf /etc/redis/redis.conf

# 创建用户
sudo useradd -r -s /sbin/nologin redis

# 设置权限
sudo chown -R redis:redis /var/lib/redis
sudo chown -R redis:redis /var/log/redis

步骤 4:创建 systemd 服务

sudo vim /etc/systemd/system/redis.service

写入:

[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
Type=notify
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf --supervised systemd
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target

重载配置:

sudo systemctl daemon-reload

2.4 CentOS 启动和管理 Redis

# 启动 Redis
sudo systemctl start redis

# 停止 Redis
sudo systemctl stop redis

# 重启 Redis
sudo systemctl restart redis

# 查看状态
sudo systemctl status redis

# 开机自启
sudo systemctl enable redis

# 取消自启
sudo systemctl disable redis

2.5 CentOS 配置文件说明

YUM/DNF 安装的文件位置:

  • 配置文件:/etc/redis.conf/etc/redis/redis.conf
  • 日志文件:/var/log/redis/redis.log
  • 数据目录:/var/lib/redis
  • PID 文件:/var/run/redis/redis.pid

2.6 CentOS 基础配置

编辑配置文件:

sudo vim /etc/redis.conf
# 或
sudo vim /etc/redis/redis.conf

配置项与 Ubuntu 相同,参考上文 1.7 节。主要修改:

bind 0.0.0.0
requirepass your_password
daemonize no
supervised systemd
dir /var/lib/redis
logfile /var/log/redis/redis.log

修改后重启:

sudo systemctl restart redis

2.7 CentOS 防火墙配置

CentOS 默认使用 firewalld:

# 开放 6379 端口
sudo firewall-cmd --permanent --add-port=6379/tcp

# 或添加 Redis 服务
sudo firewall-cmd --permanent --add-service=redis

# 重载防火墙
sudo firewall-cmd --reload

# 查看规则
sudo firewall-cmd --list-all

如果使用 iptables:

sudo iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
sudo service iptables save

2.8 CentOS SELinux 配置

CentOS 默认启用 SELinux,可能会阻止 Redis 访问:

# 临时关闭(不推荐)
sudo setenforce 0

# 永久关闭(不推荐)
sudo vim /etc/selinux/config
# 修改:SELINUX=disabled

# 推荐:配置 SELinux 策略
sudo setsebool -P redis_enable_homedirs 1
sudo semanage port -a -t redis_port_t -p tcp 6379

2.9 CentOS 测试 Redis

测试方法与 Ubuntu 相同,参考 1.9 节:

redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set test "CentOS Redis"
OK
127.0.0.1:6379> get test
"CentOS Redis"

2.10 CentOS 常见问题

问题 1:SELinux 阻止访问

# 查看 SELinux 日志
sudo tail -f /var/log/audit/audit.log | grep redis

# 生成并应用策略
sudo grep redis /var/log/audit/audit.log | audit2allow -M redis_custom
sudo semodule -i redis_custom.pp

问题 2:服务启动失败

# 查看详细日志
sudo journalctl -u redis -xe

# 检查配置文件
redis-server /etc/redis.conf --test-memory 1024

三、Redis 性能优化建议

3.1 系统参数优化

编辑 /etc/sysctl.conf

# 禁用透明大页
vm.overcommit_memory = 1

# TCP 连接优化
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

应用配置:

sudo sysctl -p

禁用透明大页:

echo never > /sys/kernel/mm/transparent_hugepage/enabled

3.2 Redis 性能配置

# 最大客户端连接数
maxclients 10000

# 慢查询日志
slowlog-log-slower-than 10000
slowlog-max-len 128

# 数据库数量
databases 16

# TCP 连接
tcp-backlog 511
tcp-keepalive 300

3.3 监控和维护

# 查看实时统计
redis-cli --stat

# 查看慢查询
redis-cli slowlog get 10

# 查看客户端连接
redis-cli client list

# 内存分析
redis-cli --bigkeys

# 持续监控
redis-cli monitor

四、Redis 安全加固

4.1 访问控制

# 1. 设置强密码
requirepass "Complex_Password_123!@#"

# 2. 限制访问 IP
bind 127.0.0.1 192.168.1.0/24

# 3. 禁用危险命令
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG "CONFIG_abc123"
rename-command SHUTDOWN ""
rename-command KEYS ""

4.2 网络安全

# 1. 使用防火墙限制访问
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="6379" protocol="tcp" accept'

# 2. 使用 SSL/TLS(Redis 6.0+)
# 配置文件中添加:
tls-port 6380
tls-cert-file /path/to/redis.crt
tls-key-file /path/to/redis.key
tls-ca-cert-file /path/to/ca.crt

4.3 运行权限

# 确保以非 root 用户运行
ps aux | grep redis

# 检查文件权限
ls -la /etc/redis/redis.conf
# 应该是:-rw-r----- redis redis

五、备份和恢复

5.1 RDB 备份

# 手动触发备份
redis-cli BGSAVE

# 备份文件位置
ls -lh /var/lib/redis/dump.rdb

# 定时备份脚本
sudo vim /usr/local/bin/redis-backup.sh
#!/bin/bash
BACKUP_DIR="/backup/redis"
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p $BACKUP_DIR
redis-cli BGSAVE
sleep 5
cp /var/lib/redis/dump.rdb $BACKUP_DIR/dump_$DATE.rdb

# 保留最近 7 天的备份
find $BACKUP_DIR -name "dump_*.rdb" -mtime +7 -delete
# 添加执行权限
sudo chmod +x /usr/local/bin/redis-backup.sh

# 添加定时任务
sudo crontab -e
# 每天凌晨 2 点备份
0 2 * * * /usr/local/bin/redis-backup.sh

5.2 AOF 备份

# 备份 AOF 文件
cp /var/lib/redis/appendonly.aof /backup/redis/

# AOF 重写
redis-cli BGREWRITEAOF

5.3 数据恢复

# 1. 停止 Redis
sudo systemctl stop redis

# 2. 恢复数据文件
sudo cp /backup/redis/dump.rdb /var/lib/redis/
sudo chown redis:redis /var/lib/redis/dump.rdb

# 3. 启动 Redis
sudo systemctl start redis

# 4. 验证数据
redis-cli DBSIZE

六、总结

本文详细介绍了在 Ubuntu 和 CentOS 系统上安装、配置 Redis 的完整流程,包括:

  1. 安装方式:包管理器安装和源码编译两种方式
  2. 服务管理:使用 systemd 管理 Redis 服务
  3. 配置优化:持久化、内存管理、安全配置等
  4. 安全加固:访问控制、命令重命名、防火墙配置
  5. 备份恢复:RDB 和 AOF 两种备份方式
  6. 问题排查:常见问题的解决方案

无论是开发环境还是生产环境,按照本文的步骤都能快速搭建起稳定可靠的 Redis 服务。建议在生产环境中:

  • 使用强密码和访问控制
  • 配置持久化和定期备份
  • 监控 Redis 性能指标
  • 定期更新 Redis 版本

希望本文对你有所帮助!如有问题欢迎在评论区交流~~


参考资料:

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐