1. 为什么选择yum安装Redis?
在Linux系统上部署Redis服务时,yum安装方式因其简单高效成为大多数运维人员的首选。相比源码编译安装需要解决依赖关系和手动配置的繁琐,yum能够自动处理软件包依赖关系,一条命令即可完成安装部署。对于使用CentOS/RHEL系统的用户来说,这是最符合系统原生生态的安装方式。
提示:yum安装的Redis版本通常不是最新版,如需特定版本建议通过官方rpm包或源码编译安装
我管理过上百台服务器,yum安装方式在以下场景特别适用:
- 快速搭建测试环境
- 批量部署标准化环境
- 对Redis版本无特殊要求的生产环境
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与依赖检查
2.1 系统版本确认
首先通过以下命令确认系统版本:
bash复制cat /etc/redhat-release
典型输出示例:
code复制CentOS Linux release 7.9.2009 (Core)
不同CentOS版本对应的yum源配置有所差异:
- CentOS 7:默认使用base/updates源
- CentOS 8:需配置AppStream和BaseOS源
- CentOS Stream:滚动更新源
2.2 网络连接测试
执行网络连通性测试:
bash复制ping -c 3 mirrors.aliyun.com
若出现网络问题,需要先配置网络代理或更换yum源。
2.3 存储空间检查
Redis默认会将数据持久化到磁盘,需要确保有足够空间:
bash复制df -h /var/lib/redis
建议预留至少2倍于内存大小的磁盘空间。
3. yum源配置优化
3.1 备份原有源
安全起见先备份现有配置:
bash复制mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
3.2 配置阿里云镜像源
对于CentOS 7:
bash复制curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
对于CentOS 8:
bash复制curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
3.3 更新缓存
执行源数据更新:
bash复制yum clean all
yum makecache
4. Redis安装过程详解
4.1 执行安装命令
基础安装命令:
bash复制yum install -y redis
如果需要安装特定版本:
bash复制yum --showduplicates list redis
yum install -y redis-5.0.3-1.el7
4.2 安装后文件位置
重要文件路径:
- 配置文件:/etc/redis.conf
- 日志文件:/var/log/redis/redis.log
- 数据目录:/var/lib/redis
- 可执行文件:/usr/bin/redis-server
4.3 服务管理命令
启动服务:
bash复制systemctl start redis
设置开机自启:
bash复制systemctl enable redis
查看状态:
bash复制systemctl status redis
5. 基础配置调优
5.1 内存配置建议
修改/etc/redis.conf:
code复制maxmemory 2gb
maxmemory-policy allkeys-lru
注意:maxmemory不要超过物理内存的60%,避免系统OOM
5.2 安全加固配置
禁用危险命令:
code复制rename-command FLUSHALL ""
rename-command CONFIG ""
设置密码认证:
code复制requirepass YourStrongPassword
5.3 网络绑定配置
生产环境建议:
code复制bind 127.0.0.1
protected-mode yes
6. 验证安装结果
6.1 基础功能测试
连接Redis:
bash复制redis-cli
执行测试命令:
code复制127.0.0.1:6379> PING
PONG
127.0.0.1:6379> SET test "hello"
OK
127.0.0.1:6379> GET test
"hello"
6.2 性能基准测试
执行redis-benchmark:
bash复制redis-benchmark -q -n 100000
典型输出示例:
code复制PING_INLINE: 85034.04 requests per second
PING_BULK: 86206.90 requests per second
SET: 81037.28 requests per second
7. 常见问题排查
7.1 启动失败排查
查看详细日志:
bash复制journalctl -u redis -f
常见错误:
- 端口冲突:修改/etc/redis.conf中的port
- 权限问题:chown -R redis:redis /var/lib/redis
- 内存不足:调整vm.overcommit_memory参数
7.2 连接问题处理
测试网络连通性:
bash复制telnet 127.0.0.1 6379
防火墙设置:
bash复制firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --reload
8. 生产环境建议
8.1 监控配置
安装redis_exporter:
bash复制yum install -y https://github.com/oliver006/redis_exporter/releases/download/v1.15.0/redis_exporter-v1.15.0.linux-amd64.tar.gz
Prometheus配置示例:
yaml复制- job_name: 'redis'
static_configs:
- targets: ['localhost:9121']
8.2 备份策略
定时RDB备份:
code复制save 900 1
save 300 10
save 60 10000
建议配合crontab做定期备份:
bash复制0 2 * * * redis-cli BGSAVE
8.3 高可用方案
Redis Cluster配置示例:
code复制cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 5000
9. 进阶配置技巧
9.1 内存优化
配置项示例:
code复制hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
9.2 持久化策略
RDB+AOF混合模式:
code复制save 300 100
appendonly yes
appendfsync everysec
aof-use-rdb-preamble yes
9.3 慢查询监控
配置阈值(毫秒):
code复制slowlog-log-slower-than 10000
slowlog-max-len 128
查看慢查询:
bash复制redis-cli SLOWLOG GET 10
10. 维护与管理
10.1 版本升级
查看可用版本:
bash复制yum --showduplicates list redis
升级命令:
bash复制yum update redis
10.2 数据迁移
使用redis-cli:
bash复制redis-cli --rdb dump.rdb
scp dump.rdb newserver:/var/lib/redis/
10.3 性能调优
关键内核参数:
bash复制echo never > /sys/kernel/mm/transparent_hugepage/enabled
sysctl vm.overcommit_memory=1
11. 安全加固措施
11.1 网络隔离
配置示例:
code复制bind 10.0.0.100
protected-mode yes
11.2 命令限制
禁用危险命令:
code复制rename-command FLUSHDB ""
rename-command SHUTDOWN ""
11.3 审计日志
安装rsyslog:
bash复制yum install -y rsyslog
配置/etc/rsyslog.d/redis.conf:
code复制if $programname == 'redis' then /var/log/redis_audit.log
12. 容器化部署方案
12.1 Docker安装
拉取官方镜像:
bash复制docker pull redis:6.2
启动容器:
bash复制docker run --name redis -p 6379:6379 -d redis:6.2
12.2 持久化配置
带数据卷启动:
bash复制docker run -v /data/redis:/data --name redis -d redis redis-server --appendonly yes
12.3 集群部署
使用docker-compose:
yaml复制version: '3'
services:
redis-node1:
image: redis:6.2
command: redis-server --cluster-enabled yes
redis-node2:
image: redis:6.2
command: redis-server --cluster-enabled yes
13. 可视化工具推荐
13.1 Redis Desktop Manager
安装方法:
bash复制wget https://github.com/uglide/RedisDesktopManager/releases/download/2022.5/redis-desktop-manager-2022.5-181-x86_64.AppImage
chmod +x redis-desktop-manager-*.AppImage
13.2 Another Redis Desktop Manager
安装方法:
bash复制yum install -y https://github.com/qishibo/AnotherRedisDesktopManager/releases/download/v1.5.6/Another-Redis-Desktop-Manager.1.5.6.AppImage
13.3 命令行增强工具
安装redis-tools:
bash复制yum install -y redis-tools
常用命令:
- redis-benchmark:性能测试
- redis-check-aof:AOF文件检查
- redis-cli:命令行客户端
14. 性能优化实战
14.1 内存碎片整理
手动执行:
bash复制redis-cli MEMORY PURGE
自动配置:
code复制activedefrag yes
active-defrag-ignore-bytes 100mb
active-defrag-threshold-lower 10
14.2 连接池优化
建议配置:
code复制maxclients 10000
timeout 300
tcp-keepalive 60
14.3 管道技术应用
性能对比测试:
bash复制redis-benchmark -q -n 100000 -P 16
15. 监控与告警
15.1 关键指标监控
必须监控的指标:
- used_memory:内存使用量
- connected_clients:客户端连接数
- instantaneous_ops_per_sec:每秒操作数
- keyspace_hits:命中率
15.2 Prometheus监控
配置示例:
yaml复制- job_name: 'redis'
static_configs:
- targets: ['localhost:9121']
metrics_path: /scrape
params:
target: ['redis://localhost:6379']
15.3 告警规则示例
内存告警规则:
yaml复制groups:
- name: redis
rules:
- alert: RedisMemoryHigh
expr: redis_memory_used_bytes / redis_memory_max_bytes > 0.8
for: 5m
16. 备份与恢复
16.1 手动备份
执行RDB快照:
bash复制redis-cli SAVE
或后台执行:
bash复制redis-cli BGSAVE
16.2 自动备份策略
crontab示例:
bash复制0 2 * * * redis-cli BGSAVE
16.3 数据恢复步骤
停止Redis服务:
bash复制systemctl stop redis
替换RDB文件:
bash复制cp dump.rdb /var/lib/redis/
chown redis:redis /var/lib/redis/dump.rdb
启动服务:
bash复制systemctl start redis
17. 集群部署方案
17.1 主从复制配置
在从节点配置:
code复制replicaof 10.0.0.1 6379
masterauth YourStrongPassword
17.2 Redis Cluster部署
创建集群:
bash复制redis-cli --cluster create \
10.0.0.1:6379 \
10.0.0.2:6379 \
10.0.0.3:6379 \
--cluster-replicas 1
17.3 哨兵模式配置
sentinel.conf示例:
code复制sentinel monitor mymaster 10.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
18. 安全审计
18.1 日志分析
关键日志事件:
- 认证失败
- 危险命令执行
- 连接暴增
18.2 入侵检测
检查异常命令:
bash复制grep -E "FLUSH|CONFIG|SHUTDOWN" /var/log/redis/redis.log
18.3 安全扫描工具
使用redis-security:
bash复制git clone https://github.com/redis-security/redis-security.git
cd redis-security
python redis-security.py -t 127.0.0.1
19. 性能调优
19.1 操作系统优化
内核参数调整:
bash复制echo 1024 > /proc/sys/net/core/somaxconn
echo never > /sys/kernel/mm/transparent_hugepage/enabled
19.2 Redis配置优化
关键参数:
code复制tcp-backlog 511
supervised systemd
repl-disable-tcp-nodelay no
19.3 客户端优化
连接池配置示例(Java):
java复制JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(128);
poolConfig.setMaxIdle(32);
20. 故障处理
20.1 数据恢复
从AOF恢复:
bash复制redis-check-aof --fix appendonly.aof
20.2 主从同步问题
强制全量同步:
bash复制redis-cli -h slave-ip DEBUG SLEEP 30
20.3 内存溢出处理
紧急处理步骤:
- 设置maxmemory-policy为allkeys-lru
- 临时增加swap空间
- 优先考虑垂直扩展
21. 版本升级
21.1 小版本升级
标准流程:
bash复制yum update redis
systemctl restart redis
21.2 大版本升级
推荐步骤:
- 在新服务器部署新版本
- 配置为旧版从节点
- 数据同步完成后切换流量
21.3 回滚方案
备份关键文件:
- RDB/AOF文件
- 配置文件
- 系统服务文件
22. 最佳实践
22.1 键命名规范
推荐格式:
code复制业务名:对象名:ID[:子对象]
示例:
code复制user:session:12345
order:items:67890
22.2 数据结构选择
选择指南:
- 简单键值:String
- 对象存储:Hash
- 队列:List
- 去重集合:Set
- 排行榜:ZSet
22.3 缓存策略
推荐方案:
- 热点数据:永久缓存
- 普通数据:TTL+LRU
- 冷数据:不缓存
23. 扩展阅读
23.1 官方文档
Redis官方文档:
https://redis.io/documentation
23.2 性能优化指南
Redis性能优化:
https://redis.io/topics/benchmarks
23.3 安全加固
Redis安全:
https://redis.io/topics/security
24. 经验分享
在实际运维中,我发现这些经验特别有价值:
- 生产环境一定要设置maxmemory,避免内存溢出
- 定期执行MEMORY DOCTOR检查内存健康状态
- 使用redis-cli --latency检测网络延迟
- 重要操作前执行BGSAVE备份数据
- 监控connected_clients指标预防连接泄露
对于大规模部署,建议:
- 使用Redis Cluster分散负载
- 部署多个哨兵节点提高可用性
- 为不同业务使用独立Redis实例隔离风险
