一、写在前面:为什么安装 Redis 也能写成一本书
在缓存、消息队列、排行榜、实时计数、分布式锁等场景中,Redis 几乎成了工程师工具箱里的瑞士军刀。然而,把 Redis 真正“跑起来”并让它稳定、安全、可扩展,远没有这么简单:
- 单机版如何调优?
- 主从复制如何防脑裂?
- 哨兵模式如何自动故障转移?
- 容器化后如何持久化?
本文用近四千字,带你走完 Redis 安装、配置、调优、集群化、容器化、监控与备份的完整链路,帮你把“跑起来”升级为“跑得好”。
二、版本与发行版:选择困难症的解药
1. 官方主线
奇数版(7.0、7.2)为稳定版,偶数版(7.1、7.3)为开发版。
2. Linux 发行版仓库
Ubuntu/Debian 的 `apt`、CentOS/RHEL 的 `yum`、Alpine 的 `apk` 都提供预编译包,开箱即用,但版本可能落后。
3. 源码编译
可获得最新特性,也能自定义编译参数(TLS、systemd、jemalloc)。
4. 容器镜像
官方 Docker Hub、Red Hat Quay、GitHub Container Registry 均提供多架构镜像,可随拉随用。
一句话:开发测试用仓库包,生产用源码或官方镜像,奇数版优先。
三、单机安装:三条路径,总有一款适合你
1. 包管理器(最快上手)
- 更新仓库索引
- 安装 redis-server 与 redis-tools
- systemd 一键启动、开机自启
适合本地开发、CI 环境。
2. 源码编译(最灵活)
- 安装编译依赖(gcc、make、jemalloc)
- wget 下载源码 tarball
- make && make install
- 自定义安装路径、编译参数
适合需要特定版本或特性的生产环境。
3. 容器镜像(最干净)
- 一行 docker run 即可拉起
- 挂载自定义配置文件、数据卷
- 多架构支持(x86_64、ARM64)
适合云原生、微服务场景。
四、目录结构:看懂文件,才能看懂配置
- redis-server:可执行二进制
- redis.conf:主配置文件
- redis-cli:命令行客户端
- redis-sentinel:哨兵进程(高可用)
- redis-check-aof / redis-check-rdb:AOF/RDB 文件修复工具
- /var/lib/redis:RDB/AOF 持久化目录
- /etc/redis/redis.conf:Linux 发行版默认配置
熟悉目录,才能快速定位日志、配置、持久化文件。
五、配置文件深度解析:30 行配置决定 90 % 性能
1. 网络绑定
bind 127.0.0.1 → 仅本地;bind 0.0.0.0 → 全网;配合 protected-mode yes 防外网误开。
2. 持久化策略
save 900 1 → 900 秒内 1 次写即 RDB;appendonly yes → AOF 实时刷盘。
3. 内存上限
maxmemory 2gb → 到达上限触发淘汰策略。
4. 日志级别
loglevel notice → 生产环境;debug → 排障专用。
5. TLS/SSL
tls-port 6380 → 加密端口,配合 requirepass 强密码。
把配置拆成“网络、持久化、内存、日志、安全”五大块,后续调优按图索骥即可。
六、单机调优:让单节点飞起来
1. 内存规划
预留 50 % 给操作系统页缓存,Redis 本身只存热数据。
2. 淘汰策略
allkeys-lru → 缓存场景;volatile-lfu → 带过期键场景。
3. RDB vs AOF
RDB 恢复快,AOF 实时性好,混合持久化兼顾两者。
4. 线程模型
io-threads 4 → 充分利用多核;io-threads-do-reads yes → 读也并行。
5. 客户端连接
tcp-keepalive 300 → 防僵尸连接;timeout 0 → 永不超时,适合长连接。
七、主从复制:读写分离与容灾
1. 拓扑
一主一从、一主多从、级联复制(主 → 从 → 从)。
2. 配置要点
- 主节点:开启持久化,配置 repl-backlog-size。
- 从节点:replicaof 主节点 IP 端口。
3. 故障演练
手动 kill 主节点,从节点自动切换读写;主节点恢复后,重新挂载为从。
八、哨兵模式:高可用的最后一公里
1. 哨兵角色
Sentinel 进程监控主从健康,故障时自动切换。
2. 配置
sentinel monitor mymaster 127.0.0.1 6379 2 → 2 票法定人数。
3. 客户端重定向
哨兵切换后,客户端需支持哨兵发现新主节点(Redis Sentinel 协议)。
4. 脑裂防护
min-replicas-to-write 1 → 写操作至少 1 个从节点确认。
九、Cluster 模式:横向扩展的终极答案
1. 哈希槽
16384 个槽位,每个节点负责一段。
2. 节点发现
cluster meet IP 端口 → 新节点加入集群。
3. 故障迁移
节点宕机后,槽位自动迁移到健康节点。
4. 客户端
需支持 Cluster 协议,自动重定向 MOVED/ASK。
5. 运维要点
rebalance 槽位、迁移数据、监控 cluster_state。
十、容器化:镜像、数据卷、健康检查
1. 镜像选择
官方、社区精简、Alpine 三种路线,按体积与功能权衡。
2. 数据卷
- 本地卷:性能最好,需备份策略。
- 网络卷:跨主机共享,注意延迟。
3. 健康检查
redis-cli ping → PONG 视为健康;自定义脚本检测 replication lag。
4. 资源限制
memory 限制需 > maxmemory + 20 % 缓冲区,防止 OOM。
十一、持久化备份:RDB、AOF、混合
1. 定时 RDB
save 900 1 → 每 15 分钟一次快照。
2. AOF 重写
auto-aof-rewrite-percentage 100 → 文件翻倍即触发重写。
3. 冷备
rsync 或对象存储异地备份,保留 7 天历史。
4. 热备
主从复制 + 哨兵,实时双活。
十二、监控与告警:让 Redis 说话
1. 指标
- 内存使用率、命中率、keyspace_hits_ratio。
- 连接数、阻塞客户端、repl_lag。
2. 工具
redis-cli info、redis-stat、Prometheus Exporter。
3. 告警
内存 >90 %、连接数 >80 %、repl_lag >1 s 触发报警。
4. 自愈
脚本自动扩容节点或重启故障进程。
十三、安全加固:口令、ACL、TLS 三板斧
1. 强密码
requirepass + ACL 用户权限细分。
2. TLS
stunnel 或原生 tls-port,强制加密传输。
3. 网络隔离
内网部署 + 防火墙白名单,禁止公网直接暴露。
十四、未来展望:Redis 7 与 Stream
- Stream 数据类型:消息队列、事件溯源。
- ACL 精细化:按用户、按命令细粒度控制。
- 集群 TLS:加密传输与认证一体化。
- 云原生:Sidecar 模式、Serverless Redis。
十五、每日一练:亲手搭建一套三节点集群
1. 安装:源码编译 7.2。
2. 配置:主从 + 哨兵。
3. 数据:写入 10 万 KV。
4. 故障:手动 kill 主节点,观察切换。
5. 复盘:记录耗时与异常写进知识库。
十六、结语:把安装写成 SOP
Redis 的安装不是终点,而是高可用、高性能、高安全的起点。
当你下一次面对“缓存雪崩、数据丢失、性能瓶颈”时,
请记得:
- 安装只是第一步,
- 配置决定 80 % 性能,
- 监控与备份才是生命线。
把本文的十六步 checklist 写进团队手册,
让每一次 Redis 部署都“有章可循,有迹可查”。