# Redis中的高可用與持久化配置
## 目錄
1. [Redis高可用概述](#1-redis高可用概述)
2. [Redis持久化機制](#2-redis持久化機制)
- [RDB持久化](#21-rdb持久化)
- [AOF持久化](#22-aof持久化)
- [混合持久化](#23-混合持久化)
3. [Redis主從復制配置](#3-redis主從復制配置)
4. [Redis哨兵模式配置](#4-redis哨兵模式配置)
5. [Redis Cluster集群配置](#5-redis-cluster集群配置)
6. [持久化配置優化建議](#6-持久化配置優化建議)
7. [高可用方案對比](#7-高可用方案對比)
8. [生產環境配置示例](#8-生產環境配置示例)
9. [常見問題排查](#9-常見問題排查)
---
## 1 Redis高可用概述
Redis作為內存數據庫,其高可用性主要通過以下方式實現:
- **數據持久化**:RDB和AOF兩種機制
- **數據冗余**:主從復制(Replication)
- **故障轉移**:哨兵模式(Sentinel)
- **分布式架構**:Redis Cluster
> 高可用目標:服務不間斷 + 數據不丟失
---
## 2 Redis持久化機制
### 2.1 RDB持久化
**原理**:定時生成內存快照(snapshot)
**配置項**(redis.conf):
```conf
save 900 1 # 900秒內至少1個key變化
save 300 10 # 300秒內至少10個key變化
save 60 10000 # 60秒內至少10000個key變化
dbfilename dump.rdb # RDB文件名
dir /var/lib/redis # 存儲目錄
stop-writes-on-bgsave-error yes # 磁盤滿時停止寫入
rdbcompression yes # 啟用壓縮
rdbchecksum yes # 啟用校驗
優缺點: - ? 恢復速度快 - ? 文件體積小 - ? 可能丟失最后一次快照后的數據
原理:記錄所有寫操作命令(append-only)
配置項:
appendonly yes # 啟用AOF
appendfilename "appendonly.aof"
appendfsync everysec # 同步策略:always|everysec|no
auto-aof-rewrite-percentage 100 # 增長100%時觸發重寫
auto-aof-rewrite-min-size 64mb # 最小重寫大小
aof-load-truncated yes # 加載截斷的AOF文件
重寫機制:
redis-cli BGREWRITEAOF # 手動觸發重寫
配置項:
aof-use-rdb-preamble yes # 開啟混合模式
工作流程: 1. 定期生成RDB快照 2. 增量操作以AOF格式追加 3. 重寫時生成RDB+AOF組合文件
主節點配置:
bind 0.0.0.0
protected-mode no
requirepass masterpassword
從節點配置:
replicaof 192.168.1.100 6379
masterauth masterpassword
replica-serve-stale-data yes
replica-read-only yes
驗證復制狀態:
redis-cli info replication
sentinel.conf示例:
sentinel monitor mymaster 192.168.1.100 6379 2
sentinel auth-pass mymaster masterpassword
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
啟動哨兵:
redis-sentinel /path/to/sentinel.conf
最少6節點配置(3主3從):
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
cluster-require-full-coverage no
創建集群:
redis-cli --cluster create \
192.168.1.101:6379 192.168.1.102:6379 \
192.168.1.103:6379 192.168.1.104:6379 \
192.168.1.105:6379 192.168.1.106:6379 \
--cluster-replicas 1
RDB優化:
save
命令觸發同步保存AOF優化:
everysec
策略平衡性能與安全混合模式建議:
aof-timestamp-enabled
調試時間戳方案 | 數據一致性 | 自動故障轉移 | 擴展性 | 復雜度 |
---|---|---|---|---|
主從復制 | 最終一致 | ? | 低 | 低 |
哨兵模式 | 最終一致 | ? | 中 | 中 |
Redis Cluster | 分區一致 | ? | 高 | 高 |
典型電商場景配置:
# 持久化
save 900 1
save 300 10
appendonly yes
appendfsync everysec
aof-use-rdb-preamble yes
# 內存管理
maxmemory 16gb
maxmemory-policy volatile-lru
# 集群配置
cluster-enabled yes
cluster-node-timeout 15000
Q1:AOF文件過大怎么辦?
# 檢查AOF狀態
redis-cli info persistence
# 手動觸發重寫
redis-cli BGREWRITEAOF
Q2:主從同步延遲高?
# 查看復制偏移量
redis-cli info replication
Q3:故障轉移失???
# 檢查哨兵日志
tail -f /var/log/redis/sentinel.log
本文檔持續更新,最后修改時間:2023年10月 “`
注:此為精簡版框架,完整7000字版本需要擴展以下內容: 1. 每種配置的詳細參數說明 2. 性能測試數據對比 3. 不同業務場景的配置模板 4. 詳細的故障排查案例 5. 與Kubernetes的集成方案 6. 監控指標說明(Prometheus配置) 7. 安全加固建議等章節
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。