过期与持久化

返回 Redis

过期策略

EXPIRE key 3600
TTL key                         # -1 永不过期,-2 不存在
PEXPIRE / EXPIREAT

惰性删除:访问时发现过期再删。定期删除:随机抽样过期 key。

maxmemory-policy

策略行为
noeviction写满报错(默认)
allkeys-lru所有 key LRU
allkeys-lfu4.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 可能瞬时占双倍内存。


相关