Redis 面试题:数据结构与缓存场景
从数据模型选择开始,再练习缓存一致性、失效与故障处理。
适用范围
Redis;对象编码与命令行为需核对实际部署版本。
Redis 面试题需要区分三个层次:命令提供的数据类型、服务端采用的内部表示,以及业务中的缓存策略。把它们混为一谈,容易把特定版本的实现细节误当成长期不变的接口约定。
学习顺序
- 数据建模。 针对计数、排行榜、用户属性等需求选择数据类型,说明关键命令和复杂度。
- 内部实现。 再阅读底层结构。涉及 ziplist、listpack、对象编码阈值时,写出来源版本,不直接复用旧文章的结论。
- 缓存生命周期。 画出首次读取、命中、过期、更新、重试五条路径,标明数据库与缓存各自负责什么。
- 故障处理。 给慢查询、热点键、缓存不可用设计可观测指标与回退方案,说明回退给数据库带来的压力。
练习:商品详情缓存
先写清楚允许多长时间的数据延迟,再决定更新和失效策略。用时间线描述两个请求交错读写的过程,找到可能读到旧值的窗口;然后增加失败重试,检查是否产生新的竞态。
面试追问
- 缓存已经过期,大量请求同时回源会发生什么?
- 删除缓存失败时如何发现、如何补偿?
- 数据一致性要求提高后,缓存策略和业务成本会怎样变化?
这些题没有脱离业务约束的万能方案。回答时先声明一致性目标、数据规模和故障假设。
参考资料
相关学习路线
安排复习节奏
Redis题库
共 45 道题按题库默认顺序排列,可选择分类集中练习。
显示 45 道题
- Redis 有什么作用?为什么要用 Redis 基础与综合
- Redis 和本地缓存的区别 缓存问题与一致性
- Redis 的底层数据结构有哪些 底层数据结构
- 介绍 intset 及其升级过程,支持降级吗 底层数据结构
- 介绍 SDS,Redis 为什么要使用 SDS 而不是 C 字符串 底层数据结构
- 介绍 dict,什么是 rehash?什么是渐进式 rehash 底层数据结构
- 介绍 ziplist,什么是连锁更新?quicklist、lispack 底层数据结构
- 介绍 Redis 的 skiplist 底层数据结构
- Redis 数据类型(对象)有哪些 数据类型与应用
- Redis String 原理和使用场景(分布式锁) 数据类型与应用
- Redis List 的原理和使用场景 数据类型与应用
- Redis Set 的原理和使用场景 数据类型与应用
- Redis ZSet 的原理和使用场景(延迟队列) 数据类型与应用
- 为什么 Zset 需要同时使用跳表和字典来实现? 数据类型与应用
- 为什么 Redis 使用跳表而不是红黑树来实现 Zset 数据类型与应用
- Redis Hash 的原理和使用场景 数据类型与应用
- Redis HyperLogLog 原理和使用场景 数据类型与应用
- Redis Bitmap 原理和使用场景 数据类型与应用
- Geospatial 的原理和使用场景 数据类型与应用
- Redis Stream 的原理和使用场景 数据类型与应用
- Redis 中数据(键值对)是怎么存储的 数据类型与应用
- Redis 如何判断键是否过期?过期键的删除策略有哪些 过期与淘汰
- Redis 内存淘汰策略 过期与淘汰
- Redis 的两种持久化方式(RDB 和 AOF)以及优缺点 持久化
- 为什么 AOF 后台重写和 BGSAVE 命令都用子进程而不是线程? 持久化
- Redis 是单线程还是多线程?Redis 6.0 之后为何又引入了多线程 线程模型与事务
- Redis 不是单线程吗,为什么会存在并发安全问题 线程模型与事务
- Redis 单线程在多核机器里使用会不会浪费机器资源 线程模型与事务
- Redis 主从复制 复制与集群
- Redis 有从节点强制等待的机制吗?如何实现强制等待从节点同步完成 复制与集群
- Redis 哨兵 复制与集群
- Redis 集群 复制与集群
- Redis 集群有哪些模式 复制与集群
- Redis 主从复制、哨兵、集群的区别 复制与集群
- 什么是一致性哈希,Redis 集群为什么不用一致性哈希 复制与集群
- 如何解决 Redis 集群数据丢失问题(异步复制、集群脑裂) 复制与集群
- 介绍 Redis 事务(Redis 能实现 ACID 吗) 线程模型与事务
- Redis 缓存穿透问题及其解决方案 缓存问题与一致性
- Redis 缓存雪崩问题及其解决方案 缓存问题与一致性
- Redis 缓存击穿问题及其解决方案 缓存问题与一致性
- Redis BigKey 问题及其解决方案 缓存问题与一致性
- 如何解决缓存和数据库一致性问题 缓存问题与一致性
- 如何防止突发流量 HotKey 打崩分布式缓存? 缓存问题与一致性
- Redis 和 Memcached 的区别 基础与综合
- Redis 为什么这么快 线程模型与事务

评论 0 友善交流,让每个问题都有回响
还没有评论,分享你的看法吧。