过期与持久化
→ 返回 Redis
过期策略
EXPIRE key 3600
TTL key # -1 永不过期,-2 不存在
PEXPIRE / EXPIREAT惰性删除:访问时发现过期再删。定期删除:随机抽样过期 key。
maxmemory-policy
| 策略 | 行为 |
|---|---|
noeviction | 写满报错(默认) |
allkeys-lru | 所有 key LRU |
allkeys-lfu | 4.0+ 访问频率 |
volatile-lru / volatile-lfu | 仅带 TTL 的 key |
volatile-ttl | 优先删 TTL 最短的 |
allkeys-random | 随机 |
生产缓存:设 maxmemory + allkeys-lru/lfu,业务 key 设 TTL。雪崩防护见 缓存与一致性。
持久化
| 方式 | 原理 | 优点 | 风险 |
|---|---|---|---|
| RDB | 子进程快照 .rdb | 恢复快、文件小 | 两次快照间可能丢数据 |
| AOF | 追加写命令日志 | 可配置 fsync | 文件大、重写耗时 |
| 混合 | AOF 头 + RDB 体(aof-use-rdb-preamble) | 生产推荐 | — |
save 900 1
appendonly yes
appendfsync everysec
aof-use-rdb-preamble yes| appendfsync | 说明 |
|---|---|
always | 每条 fsync,最安全,最慢 |
everysec | 每秒 fsync,最多丢 1 秒(常用) |
no | 由 OS 刷盘,快但可能丢较多 |
注意:持久化不能替代主从 + 备份;fork RDB 时 COW 可能瞬时占双倍内存。