部署 Redis
自托管 Redis,Docker、持久化、sentinel HA 和 cluster 分片。
平台进阶
为什么
自托管 Redis 控制持久化(RDB/AOF)、内存限制和模块(RediSearch、RedisJSON)。Sentinel 提供 HA,Cluster 提供分片。
平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。
何时使用
自定义模块、大规模成本和特定持久化需求用自托管 Redis。托管优先 Upstash/Redis Cloud。
如何做
1. Docker — redis:7 镜像加 volume
2. 持久化 — AOF(appendonly yes)或 RDB 快照
3. 认证 — redis.conf 设 requirepass
4. Sentinel — 3 sentinel 监控 master 做 HA
5. Cluster — redis-cli --cluster create 分片
6. 模块 — loadmodule 装 RediSearch、RedisJSON
7. 监控 — INFO、SLOWLOG、延迟监控
示例
# docker-compose.yml
services:
redis:
image: redis:7
command: redis-server --appendonly yes --requirepass secret
volumes:
- redisdata:/data
ports: ["6379:6379"]
volumes:
redisdata:
# redis.conf
appendonly yes
appendfsync everysec
maxmemory 1gb
maxmemory-policy allkeys-lru
requirepass your-secret
# Sentinel HA
sentinel monitor mymaster redis1 6379 2
sentinel down-after-milliseconds mymaster 5000
# 连接
redis-cli -h redis -a secret
> SET key value
> GET key
常见问题
- ⚠无持久化 — 默认仅内存,重启丢数据,启用 AOF
- ⚠内存满 — 未设 maxmemory,Redis 用尽 RAM 后 OOM
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓启用 AOF appendfsync everysec — 持久性/性能最佳平衡
- ✓设 maxmemory + 淘汰策略 — 防 OOM,LRU 淘汰最少用
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求