Redis 高可用

官官方信息技术老师·7 页·深入(追求细节与边界)·0 次浏览·33 天前
信息技术大学

Redis 高可用

计算机基础面试八股 · 第 3 章 数据库(MySQL 与 Redis)

按 空格/→ 演示下一步

问一句
1 / 7 页

全部页面点击任意一页,跳回舞台从这页播放

信息技术大学

Redis 高可用

计算机基础面试八股 · 第 3 章 数据库(MySQL 与 Redis)

1第 1 页 · Redis 高可用

RDB 与 AOF 持久化

一份快照一份流水:RDB 恢复快但可能丢段,AOF 更完整但文件大恢复慢。

RDB
定时全量快照,二进制紧凑,恢复最快
AOF
追加写命令流水,可配秒级刷盘
AOF 重写
流水压实成最小命令集,控制文件膨胀
取舍
RDB 兜底恢复,AOF 保数据更全,可并用
2第 2 页 · RDB 与 AOF 持久化

主从复制与哨兵

主写从读,复制异步;哨兵盯着主节点,挂了自动投票选新主。

全量+增量
首次传 RDB 全量,之后同步命令流增量
异步复制
主不等从确认,主宕可能丢尾部数据
哨兵
监控、投票、自动故障转移三合一
3第 3 页 · 主从复制与哨兵

集群与槽分片

数据按槽切片:16384 个槽分给各节点,客户端直连路由,水平扩展。

槽
key 按 CRC16 取模映射到 16384 槽之一
分片扩容
槽分布多节点,扩容即迁移部分槽
哈希标签
{tag} 强制同槽,支撑多 key 原子操作
4第 4 页 · 集群与槽分片

过期删除与内存淘汰策略

过期靠惰性与定期双删,内存真满了按策略挑牺牲者:LRU/LFU/随机/TTL。

过期删除
惰性:访问时查;定期:抽样批量删
淘汰触发
达到 maxmemory 才启动淘汰
策略
默认 noeviction 拒写;LRU/LFU/随机/TTL 可选
5第 5 页 · 过期删除与内存淘汰策略

本节要点

  • ✓RDB 快照恢复快,AOF 完整但大
  • ✓主从异步复制,哨兵自动切换
  • ✓16384 槽分片,水平扩展
  • ✓过期双删,满员按 LRU/LFU 淘汰
延伸主题:配一次主从加哨兵算算自己的内存水位
6第 6 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1Redis 主从架构下为什么可能丢数据?

参考答案复制是异步的:主先写自己内存再同步给从,主宕机时尾部命令可能还没传到;哨兵提升新主后,旧主未复制的写入就永久丢了。可用 WAIT 等从确认换更强一致。

2AOF 秒级持久化也会丢数据,丢失窗口有多大?

参考答案取决于刷盘策略:always 每命令刷盘不丢但慢;everysec 每秒刷一次,最多丢约一秒;no 交给操作系统,窗口不可控。everysec 是性能与安全的默认折中。

3为什么 Redis 集群是 16384 个槽,而不是更多?

参考答案节点心跳要携带槽位图,16384 位约 2KB,足以精确标识分片又控制心跳体积;集群设计上限约 1000 节点,16384 槽绰绰有余,更多只是浪费带宽。

7第 7 页 · 课后思考