知识点专题话题 #5

Redis 面试题:数据结构与缓存场景

面试之星官方的头像 面试之星官方 更新于

从数据模型选择开始,再练习缓存一致性、失效与故障处理。

适用范围

Redis;对象编码与命令行为需核对实际部署版本。

Redis 面试题需要区分三个层次:命令提供的数据类型、服务端采用的内部表示,以及业务中的缓存策略。把它们混为一谈,容易把特定版本的实现细节误当成长期不变的接口约定。

学习顺序

  1. 数据建模。 针对计数、排行榜、用户属性等需求选择数据类型,说明关键命令和复杂度。
  2. 内部实现。 再阅读底层结构。涉及 ziplist、listpack、对象编码阈值时,写出来源版本,不直接复用旧文章的结论。
  3. 缓存生命周期。 画出首次读取、命中、过期、更新、重试五条路径,标明数据库与缓存各自负责什么。
  4. 故障处理。 给慢查询、热点键、缓存不可用设计可观测指标与回退方案,说明回退给数据库带来的压力。

练习:商品详情缓存

先写清楚允许多长时间的数据延迟,再决定更新和失效策略。用时间线描述两个请求交错读写的过程,找到可能读到旧值的窗口;然后增加失败重试,检查是否产生新的竞态。

面试追问

  • 缓存已经过期,大量请求同时回源会发生什么?
  • 删除缓存失败时如何发现、如何补偿?
  • 数据一致性要求提高后,缓存策略和业务成本会怎样变化?

这些题没有脱离业务约束的万能方案。回答时先声明一致性目标、数据规模和故障假设。

参考资料

相关学习路线

安排复习节奏

30 天 Java 面试计划

Redis题库

共 45 道题

按题库默认顺序排列,可选择分类集中练习。

显示 45 道题

  1. Redis 有什么作用?为什么要用 Redis 基础与综合
  2. Redis 和本地缓存的区别 缓存问题与一致性
  3. Redis 的底层数据结构有哪些 底层数据结构
  4. 介绍 intset 及其升级过程,支持降级吗 底层数据结构
  5. 介绍 SDS,Redis 为什么要使用 SDS 而不是 C 字符串 底层数据结构
  6. 介绍 dict,什么是 rehash?什么是渐进式 rehash 底层数据结构
  7. 介绍 ziplist,什么是连锁更新?quicklist、lispack 底层数据结构
  8. 介绍 Redis 的 skiplist 底层数据结构
  9. Redis 数据类型(对象)有哪些 数据类型与应用
  10. Redis String 原理和使用场景(分布式锁) 数据类型与应用
  11. Redis List 的原理和使用场景 数据类型与应用
  12. Redis Set 的原理和使用场景 数据类型与应用
  13. Redis ZSet 的原理和使用场景(延迟队列) 数据类型与应用
  14. 为什么 Zset 需要同时使用跳表和字典来实现? 数据类型与应用
  15. 为什么 Redis 使用跳表而不是红黑树来实现 Zset 数据类型与应用
  16. Redis Hash 的原理和使用场景 数据类型与应用
  17. Redis HyperLogLog 原理和使用场景 数据类型与应用
  18. Redis Bitmap 原理和使用场景 数据类型与应用
  19. Geospatial 的原理和使用场景 数据类型与应用
  20. Redis Stream 的原理和使用场景 数据类型与应用
  21. Redis 中数据(键值对)是怎么存储的 数据类型与应用
  22. Redis 如何判断键是否过期?过期键的删除策略有哪些 过期与淘汰
  23. Redis 内存淘汰策略 过期与淘汰
  24. Redis 的两种持久化方式(RDB 和 AOF)以及优缺点 持久化
  25. 为什么 AOF 后台重写和 BGSAVE 命令都用子进程而不是线程? 持久化
  26. Redis 是单线程还是多线程?Redis 6.0 之后为何又引入了多线程 线程模型与事务
  27. Redis 不是单线程吗,为什么会存在并发安全问题 线程模型与事务
  28. Redis 单线程在多核机器里使用会不会浪费机器资源 线程模型与事务
  29. Redis 主从复制 复制与集群
  30. Redis 有从节点强制等待的机制吗?如何实现强制等待从节点同步完成 复制与集群
  31. Redis 哨兵 复制与集群
  32. Redis 集群 复制与集群
  33. Redis 集群有哪些模式 复制与集群
  34. Redis 主从复制、哨兵、集群的区别 复制与集群
  35. 什么是一致性哈希,Redis 集群为什么不用一致性哈希 复制与集群
  36. 如何解决 Redis 集群数据丢失问题(异步复制、集群脑裂) 复制与集群
  37. 介绍 Redis 事务(Redis 能实现 ACID 吗) 线程模型与事务
  38. Redis 缓存穿透问题及其解决方案 缓存问题与一致性
  39. Redis 缓存雪崩问题及其解决方案 缓存问题与一致性
  40. Redis 缓存击穿问题及其解决方案 缓存问题与一致性
  41. Redis BigKey 问题及其解决方案 缓存问题与一致性
  42. 如何解决缓存和数据库一致性问题 缓存问题与一致性
  43. 如何防止突发流量 HotKey 打崩分布式缓存? 缓存问题与一致性
  44. Redis 和 Memcached 的区别 基础与综合
  45. Redis 为什么这么快 线程模型与事务

评论 0 友善交流,让每个问题都有回响

还没有评论,分享你的看法吧。