Skip to content
进阶

一句话答案

全量复制(RDB 快照)+ 增量复制(repl_backlog 缓冲区),从库重连时优先增量同步减少开销。

核心要点

当 Redis 内存达到 maxmemory 上限时,新写入操作触发淘汰:

策略范围淘汰规则
noeviction不淘汰,写入报错(默认)
allkeys-lru所有 key淘汰最久未使用的 key(LRU)
volatile-lru有过期时间的 key淘汰最久未使用的 key
allkeys-random所有 key随机淘汰
volatile-random有过期时间的 key随机淘汰
volatile-ttl有过期时间的 key淘汰剩余 TTL 最短的 key
allkeys-lfu所有 key淘汰访问频率最低的 key(LFU,Redis 4.0+)
volatile-lfu有过期时间的 key淘汰访问频率最低的 key

生产建议:

  • 缓存场景(所有数据都是可重建的)→ allkeys-lruallkeys-lfu
  • 混合场景(部分 key 不可丢失)→ 永久 key 不设过期时间,用 volatile-lru,保护永久 key
追问与易错

追问方向:

  • 全量复制什么时候触发?
  • repl_backlog 太小会怎样?
  • 主从延迟大怎么排查?

易错点:

  • ❌ 主从复制是同步的——默认异步
  • ❌ 从库宕机不影响主库——配了 min-replicas 就会影响

💡 记忆锚点

主从复制 = 师傅带徒弟:首次拜师抄全本笔记(RDB全量同步),之后师傅每天发增量讲义(命令传播);徒弟走神回来看缓冲区补课(增量同步),缓冲区翻篇了只能重新抄全本(触发全量)。