返回题库数据库刷题Redis 选择题 · 第 4 / 4 篇

高可用与集群

061 Redis 主从复制的主要目的是?

难度: 基础

  • A. 数据冗余与读写分离,从库备份数据并承接读流量
  • B. 让多个主库同时写入
  • C. 替代持久化,无需 RDB 或 AOF
  • D. 从库自动成为新主库且无需干预
查看答案与解析

正确答案A

正确原因: 复制提供数据冗余,从库默认只读可承接读流量。

关键边界: 故障切换需要 Sentinel 或 Cluster,或人工介入。

错误选项辨析: 主从是单主多从,复制不替代持久化,切换需要组件配合。

062 全量复制与部分重同步的区别是?

难度: 基础

  • A. 全量传 RDB 快照;部分重同步基于 repl-backlog 增量补发断线期间的命令
  • B. 全量只传一条命令
  • C. 部分重同步需要重建整个数据集
  • D. 断线后永远只能全量
查看答案与解析

正确答案A

正确原因: PSYNC 支持断线后增量续传,backlog 覆盖范围内的命令可补齐。

关键边界: backlog 过小或断线过久会退化为全量。

错误选项辨析: 全量传快照,部分重同步是增量,断线不一定全量。

063 复制偏移量(offset)的作用是?

难度: 基础

  • A. 记录从库的写入次数
  • B. 主从各自记录已处理命令位置,用于对齐与增量同步
  • C. 记录用户访问量
  • D. 决定淘汰策略
查看答案与解析

正确答案B

正确原因: 主从通过复制偏移量比较进度,配合 backlog 实现增量续传。

关键边界: 偏移量差距反映延迟,是监控复制的关键指标。

错误选项辨析: 偏移量与写入次数、访问量、淘汰策略无关。

064 Sentinel(哨兵)的核心职责是?

难度: 基础

  • A. 承担业务读写流量
  • B. 监控主从健康,故障时自动选举新主并通知客户端
  • C. 替代数据持久化
  • D. 对数据做分片存储
查看答案与解析

正确答案B

正确原因: Sentinel 是高可用组件,负责监控、故障转移与通知。

关键边界: 哨兵本身不存业务数据,也不做分片。

错误选项辨析: 哨兵不承担读写、不持久化、不分片。

065 Sentinel 故障转移的触发流程大致是?

难度: 基础

  • A. 直接随机选一个从库
  • B. 需要人工重启主库
  • C. 主观下线、客观下线、选举 leader、提升从库为新主、通知客户端
  • D. 只报警不切换
查看答案与解析

正确答案C

正确原因: 多数哨兵判定客观下线后,leader 执行故障转移流程。

关键边界: 客户端通过订阅或重连感知新主。

错误选项辨析: 切换有选举流程,自动完成,不只是报警。

066 部署 Sentinel 一般至少需要几个实例?

难度: 基础

  • A. 1 个足够
  • B. 必须 7 个
  • C. 3 个(奇数,保证多数派判定)
  • D. 2 个即可,无需多数
查看答案与解析

正确答案C

正确原因: 奇数实例保证任何时刻都能形成多数派,避免误判与脑裂。

关键边界: 多数派失败时哨兵无法完成切换。

错误选项辨析: 1 个哨兵无高可用意义,7 个非必需,2 个无法形成多数派。

067 主观下线(sdown)与客观下线(odown)的区别是?

难度: 进阶

  • A. 两者完全等价
  • B. 客观下线由主库自己声明
  • C. 主观下线意味着立即切换
  • D. 单个哨兵判定主观下线;多个哨兵(quorum)确认后进入客观下线
查看答案与解析

正确答案D

正确原因: sdown 是单点判断,可能误判;odown 需 quorum 多数确认才触发切换。

关键边界: 网络分区时可能出现 sdown,需多数派仲裁。

错误选项辨析: 两者等级不同,odown 由哨兵判定,sdown 不直接触发切换。

068 主从切换时“脑裂”风险指的是?

难度: 进阶

  • A. 多个哨兵同时写入数据
  • B. 从库之间互相复制
  • C. 客户端连接数过多
  • D. 原主库与客户端仍连通但哨兵已提升新主,出现两个主导致写入分叉
查看答案与解析

正确答案D

正确原因: 网络分区使原主无法被多数哨兵感知,客户端仍写入原主造成分叉。

关键边界: 可用 min-replicas-to-write 等参数限制写入,降低丢数据风险。

错误选项辨析: 脑裂是写入分叉而非哨兵写数据,与从库互复、连接数无关。

069 Redis Cluster 的数据分片方式是?

难度: 进阶

  • A. 16384 个哈希槽,key 经 CRC16 取模映射到槽,槽分配到节点
  • B. 按 key 前缀哈希到 1000 个槽
  • C. 使用一致性哈希环
  • D. 每个节点保存完整数据副本
查看答案与解析

正确答案A

正确原因: 槽是 Cluster 的基本单位,CRC16(key) 对 16384 取模定位槽。

关键边界: 槽可在节点间迁移实现扩缩容。

错误选项辨析: 槽数为 16384 而非 1000,Cluster 不用一致性哈希,节点不存全量数据。

070 客户端访问 Cluster 时收到 MOVED 与 ASK 重定向的含义是?

难度: 进阶

  • A. MOVED 表示槽已永久归属他节点;ASK 表示槽迁移中需尝试目标节点
  • B. MOVED 表示节点宕机
  • C. ASK 表示命令执行失败
  • D. 两者都要求客户端清空缓存
查看答案与解析

正确答案A

正确原因: MOVED 后客户端应更新槽映射;ASK 只在迁移窗口内单次转发。

关键边界: ASK 不更新映射,下次请求仍发原节点。

错误选项辨析: MOVED 与 ASK 都是重定向而非故障或失败,ASK 不清缓存。

071 Redis Cluster 的最小可用节点配置是?

难度: 进阶

  • A. 1 个主节点即可
  • B. 至少 3 个主节点(每个主节点可有从节点)
  • C. 必须 6 个主节点
  • D. 必须 16384 个节点
查看答案与解析

正确答案B

正确原因: 16384 个槽需要至少 3 个主节点承担,官方推荐 3 主 3 从起步。

关键边界: 单主无法满足槽分布与多数可用。

错误选项辨析: 1 主不是集群,6 主与 16384 节点都不是最小要求。

072 Cluster 何时进入不可用状态?

难度: 进阶

  • A. 任意一个从节点故障
  • B. 某槽没有可用主节点(主节点及其从节点全部故障)或多数主节点失联
  • C. 客户端缓存过期
  • D. 磁盘使用率超过 90%
查看答案与解析

正确答案B

正确原因: 槽的主备全挂会中断服务,多数主失联则无法达成共识。

关键边界: 单个从节点故障不影响主槽可用性。

错误选项辨析: 从节点故障、客户端缓存、磁盘都不是集群失效条件。

073 主从切换可能丢数据的原因与缓解是?

难度: 进阶

  • A. 切换必然零丢失
  • B. 丢数据只发生在持久化关闭时
  • C. 主库未同步的写命令在故障时丢失;min-replicas-to-write 可限制写入
  • D. 从库会主动回放未提交事务
查看答案与解析

正确答案C

正确原因: 异步复制下主库宕机瞬间的写可能尚未到达从库。

关键边界: 配置 min-replicas 可降低丢失窗口,但会牺牲可用性。

错误选项辨析: 零丢失不成立,丢写与持久化无关,从库不回放未提交事务。

074 repl-backlog(复制积压缓冲区)的作用是?

难度: 进阶

  • A. 存储所有历史命令且永不清除
  • B. 用于数据分片
  • C. 暂存近期写命令,支持断线从库增量续传,避免频繁全量
  • D. 替代 AOF 持久化
查看答案与解析

正确答案C

正确原因: backlog 保存最近写命令,从库断线后可增量补发。

关键边界: 缓冲区大小决定增量续传窗口,覆盖不到就全量。

错误选项辨析: backlog 有大小限制、不用于分片、不替代持久化。

075 Cluster 中跨槽多 key 操作(如 MSET 多个 key)会怎样?

难度: 基础

  • A. 任意跨槽操作都自动支持
  • B. 跨槽 MSET 会分布到多个节点并行执行
  • C. 跨槽操作永远返回成功但结果随机
  • D. 需要 key 在同一槽(使用 hash tag 大括号),否则报错
查看答案与解析

正确答案D

正确原因: 单命令原子性限于单节点,跨槽多 key 命令会返回错误。

关键边界: hash tag 如 {user:1} 可强制相关 key 落入同一槽。

错误选项辨析: 跨槽不自动支持、不并行执行,也不返回随机成功。

076 集群客户端(如 Lettuce、Jedis Cluster)的作用是?

难度: 基础

  • A. 在客户端本地复制全部数据
  • B. 替代服务端做持久化
  • C. 客户端只能连接一个固定节点
  • D. 维护槽映射、处理 MOVED/ASK 重定向与节点发现
查看答案与解析

正确答案D

正确原因: 集群客户端自动路由请求,感知槽迁移与节点变更。

关键边界: 客户端不存储数据,只维护路由信息。

错误选项辨析: 客户端不复制数据、不持久化,可连接多个节点。

077 集群扩容与缩容的正确认识是?

难度: 实战

  • A. 通过槽迁移在线调整,迁移期间服务可用但需监控资源
  • B. 扩容必须停机重启
  • C. 扩容会自动丢弃一半数据
  • D. 扩容后所有 key 重新哈希到完全随机位置
查看答案与解析

正确答案A

正确原因: resharding 逐槽迁移 key,业务无感但有网络与 CPU 开销。

关键边界: 大 key 迁移耗时,需分批并监控。

错误选项辨析: 扩容不停机、不丢数据,key 按槽规则迁移而非随机。

078 高可用架构设计(Sentinel vs Cluster)的选择依据是?

难度: 实战

  • A. Cluster 一定比 Sentinel 简单
  • B. 数据量大需水平扩展用 Cluster;数据量小、要求简单主从高可用用 Sentinel
  • C. Sentinel 支持分片存储
  • D. 两者可以完全互相替代
查看答案与解析

正确答案B

正确原因: Cluster 自带分片与故障转移但运维复杂,Sentinel 只管主从切换。

关键边界: 需结合容量、运维能力与业务规模选择。

错误选项辨析: Cluster 更复杂,Sentinel 不分片,两者定位不同。

079 从库默认只读,读写分离时要注意什么?

难度: 基础

  • A. 从库可以接受任意写命令
  • B. 从库数据与主库实时一致
  • C. 从库可能读到延迟数据,写命令应全部发往主库
  • D. 读写分离不需要监控延迟
查看答案与解析

正确答案C

正确原因: 从库只读避免数据分叉,复制延迟导致读旧数据。

关键边界: 实时性要求高的读应路由到主库。

错误选项辨析: 从库拒绝写,数据有延迟,需监控复制进度。

080 哨兵模式与集群模式在故障转移上的共同点是?

难度: 进阶

  • A. 切换零延迟零丢数据
  • B. 切换不需要客户端配合
  • C. 只有集群模式才有主从
  • D. 都由多数派或节点协商选出新主并切换,期间会有短暂不可写窗口
查看答案与解析

正确答案D

正确原因: 两种模式都基于主从,故障转移存在选举与传播窗口。

关键边界: 客户端需要重连新主,应用需容忍短暂抖动。

错误选项辨析: 切换有代价,客户端需配合,哨兵模式同样有主从。

官方资料

当前分类

Redis 选择题

查看全部分类 →
  1. 01数据结构与命令20 题
  2. 02缓存与性能20 题
  3. 03持久化与过期淘汰20 题
  4. 04高可用与集群20 题
ESC

输入关键词开始搜索