Redis面试经常碰到的那些问题和题目,准备起来不容忽视
- 问答
- 2025-12-29 05:42:56
- 1
面试官几乎一定会从最基础的开始问,用来确认你的知识框架,最常见的问题就是“Redis到底是什么?它和Memcached有什么区别?”(来源:多数技术面试经验贴),你不能只说它是一个缓存数据库,要提到Redis是开源的使用C语言编写的键值对数据库,数据存储在内存中,所以读写速度极快,它支持数据持久化,可以把内存中的数据保存到磁盘上,防止重启后数据丢失,它支持多种数据结构,而不仅仅是字符串,相比之下,Memcached虽然也是内存键值数据库,但数据结构单一(只支持字符串),不支持持久化,主要设计目标就是做简单的缓存,这个区别是根本性的。(来源:《Redis设计与实现》对Redis特性的概述)
紧接着,一定会问到Redis的几种基本数据结构,你不能只说得出String(字符串)、List(列表)、Set(集合)、Hash(哈希)、ZSet(有序集合)这五种。(来源:几乎所有Redis面试题列表)面试官会期望你不仅知道名字,还要知道它们各自的底层实现大概是什么,以及典型的应用场景,String可以用来做最简单的缓存、计数器;List可以实现简单的消息队列(但有问题,后面会提到);Hash适合存储对象信息,比如一个用户的姓名、年龄等,可以一次性存取,比把对象序列化成字符串再存更高效;Set可以做交集、并集,适合实现共同关注、标签系统;ZSet带分数,可以做排行榜。(来源:Redis官方文档及应用场景分析文章)

数据结构会问得更深,比如会问“ZSet的底层实现是什么?”(来源:高频深入面试题)你需要提到跳跃表(SkipList)和哈希表(或字典)的结合,跳跃表负责维持有序性,支持范围查询,哈希表负责快速通过成员(member)查找对应的分数(score),可能还会问为什么用跳跃表而不用平衡树?原因包括跳跃表实现相对简单,区间查询更方便等。(来源:《Redis设计与实现》中对有序集合实现的详解)
持久化机制是必考点,一定会问“Redis的两种持久化方式RDB和AOF的区别和优缺点。”(来源:核心面试题)RDB是定时快照,生成一个数据文件,优点是文件紧凑,恢复大数据集速度快;缺点是可能会丢失最后一次快照之后的数据,AOF是记录每一次写操作命令,类似日志,优点是数据完整性高,可以配置为每秒同步或每命令同步,丢数据少;缺点是文件体积大,恢复速度慢,Redis 4.0之后引入了混合持久化,结合了两者的优点。(来源:Redis官方持久化章节及多篇技术解析文章)

高可用和集群也是重灾区。“主从复制、哨兵(Sentinel)、集群(Cluster)模式你了解吗?”(来源:中高级面试常见问题)主从复制是基础, master负责写,slave负责读,做读写分离和数据备份,但主节点挂了需要手动切换,哨兵模式就是为了解决自动故障转移而生的,哨兵进程会监控主节点,主节点挂了会自动选举一个从节点升级为主节点,但哨兵不解决数据容量分摊的问题,集群模式则通过分片(Sharding)将数据分布到多个节点上,既解决了高可用,也解决了单机内存容量限制的问题。(来源:Redis官方高可用文档)
缓存相关问题非常贴近实际工作。“什么是缓存穿透、缓存击穿、缓存雪崩?怎么解决?”(来源:实战类高频面试题)缓存穿透是查询一个根本不存在的数据,导致请求直接打到数据库,解决方案可以用布隆过滤器(Bloom Filter)快速判断数据是否存在,或者对不存在的数据也缓存一个空值(但需设置较短过期时间),缓存击穿是某个热点key在过期瞬间,大量请求同时进来,击穿缓存打到数据库,解决方案可以用互斥锁(比如Redis的setnx命令),只让一个请求去查数据库重建缓存,其他请求等待,缓存雪崩是同一时间大量key集体过期,导致所有请求都打到数据库,解决方案可以给过期时间加上随机值,避免同时过期,或者设置热点数据永不过期。(来源:大量解决缓存问题的技术博客和文章)
一些零散但重要的问题也可能被问到。“为什么Redis这么快?”(来源:基础但重要的原理题)答案通常是多方面的:基于内存操作,IO速度极快;使用单线程模型避免了多线程的上下文切换和竞争开销(对于6.0版本之前的核心网络模型而言);使用了IO多路复用机制(如epoll)来处理大量连接请求;数据结构经过精心设计,效率很高。(来源:《Redis设计与实现》中对单线程模型的解释及性能分析文章)从6.0版本开始,Redis引入了多线程处理网络IO,但执行命令的核心模块仍然是单线程的,这点需要区分清楚。(来源:Redis 6.0新特性发布说明)
还可能问到“Redis的过期键删除策略?”(来源:细节知识点)主要有两种:惰性删除(当访问一个key时才发现它过期了,然后删除)和定期删除(每隔一段时间随机抽取一些key检查并删除过期的),Redis采用的是两者结合的折中策略。(来源:Redis官方对过期键的说明)
准备Redis面试,不仅要记住这些概念,最好能结合自己项目的实际使用经验,讲讲在什么场景下用了Redis的什么数据结构或特性,解决了什么问题,这样会给面试官留下更深的印象。

本文由畅苗于2025-12-29发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/70472.html
