Redis 面试十大实战题通常涵盖数据结构底层原理、持久化机制选择、高可用架构设计、缓存穿透/击穿/雪崩解决方案、分布式锁实现、消息队列场景应用、大 Key 处理、热 Key 问题、内存优化策略以及集群模式运维等核心挑战。应对技术挑战的关键在于结合真实业务场景,不仅背诵八股文,更要理解底层机制如 IO 多路复用、单线程模型优势及混合持久化原理。建议在准备时多关注生产环境配置、故障排查案例及代码实战,例如使用 ZSet 实现延迟队列或通过 Sentinel 实现故障转移,从而在面试中展现解决复杂问题的能力。
Redis 面试必刷 10 题:从数据结构到实战技巧全解析
一、Redis 支持哪些数据类型?(送分题也有坑!) 你以为面试官在问 5 种基础类型?Too young! 现在流行追问底层结构:String: 不只是存字符串!还能存整型 (自增操作)、浮点型 (INCRBYFLOAT) Hash: 底层是 ziplist+hashtable(画重点!字段数<512 且值大小<64 字节用 ziplist) List: 双向链表实现,BLPOP 命令实现阻塞队列 (消息队列场景) Set: 自动去重 + 交集运算 (共同好友功能) ZSet: 跳表 + 字典实现,范围查询时间复杂度 O(logN)(排行榜场景) 避坑指南:当面试官问"用过哪些数据结构",一定要结合业务场景!比如用 ZSet 实现延迟队列 (时间戳作为 score),比直接回答五种类型加分十倍!二、持久化机制选 RDB 还是 AOF? 这题 90% 的人会背八股文,但实际生产环境要这么答:RDB:fork 子进程生成快照,恢复快但可能丢数据 (适合容灾备份) AOF: 记录写命令,数据更安全但文件体积大 (bgrewriteaof 重写解决) 实战配置:生产环境建议混合使用! #在 redis.conf 中开启 aof-use-rdb-preambleyes AI 写代码 bash 1 2 (原理:AOF 文件前半段用 RDB 格式,后半段追加日志,4.0 版本后的神操作!)(资料日期为 2025 年 4 月 23 日)
个 Redis 高阶面试题
大家好,我是 V 哥,过年跟 2 个大佬小聚,聊到他们招人的标准,偷偷的记下来,以下是为 Java 高级程序员整理的 Redis 深度面试题及答案,涵盖高并发、分布式、性能优化等核心场景,结合企业级解决方案和代码示例:一、Redis 高可用与持久化 1. 如何设计一个千万级 QPS 的 Redis 高可用架构? // 架构方案:1. 多层级缓存:本地缓存 (Caffeine)+RedisCluster(分片)2. 部署模式:RedisCluster6 节点 (3 主 3 从)+Sentinel 集群 3. 读写分离:主节点写,从节点读 (通过 JedisCluster 配置 readFrom=REPLICA)4.Proxy 层:使用 RedisClusterProxy 统一接入 5. 监控体系:Prometheus+Grafana 监控节点状态、慢查询// 容灾方案:-故障转移:Sentinel 自动切换主从 - 数据持久化:AOF 每秒刷盘+RDB 每小时备份 - 跨机房同步:通过 Redis-Shake 工具进行异地双活 一键获取完整项目代码 java 1 2 3 4 5 6 7 8 9 10 11 2. AOF 重写期间内存暴涨如何解决? // 问题场景:当 Redis 实例内存使用率超过 80% 时触发 AOF 重写,导致 fork 子进程时内存翻倍// 解决方案:1. 配置优化:-aof-rewrite-incremental-fsync yes(增量同步)-auto-aof-rewrite-percentage80(降低重写阈值)2. 内存控制:-使用 Hash 分桶存储大 Key(如用户画像数据)-开启 activedefrag yes 自动内存碎片整理 3. 运维方案:-在业务低谷期通过 BGREWRITEAOF 手动触发 - 使用 Redis 内存分析工具 (rdb-tools) 定位大 Key 一键获取完整项目代码 java 1 2 3 4 5 6 7 8 9 10 11 12 13 二、数据结构与高级特性 3. 如何用 Redis 实现延迟队列? // 场景:订单 30 分钟未支付自动关闭 publicclassDelayQueueService{privatestaticfinalStringDELAY_QUEUE="order:delay:queue";// 生产消息 publicvoidproduceDelayMessage(StringorderId,longdelaySeconds){Jedisjedis=jedisPool.getResource();longscore=System.currentTimeMillis()+delaySeconds*1000;jedis.zadd(DELAY_QUEUE,score,orderId);}// 消费消息 publicvoidconsumeDelayMessages(){while(!Thread.interrupted()){Set
道史上最全 Redis 面试题,面试官能问的都被我找到了 (含答案)
1、什么是 Redis? 简述它的优缺点?Redis 的全称是:Remote Dictionary.Server,本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value DB。Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个 value 的最大限制是 1GB,不像 memcached 只能保存 1MB 的数据,因此 Redis 可以用来实现很多有用的功能。比方说用他的 List 来做 FIFO 双向链表,实现一个轻量级的高性 能消息队列服务,用他的 Set 可以做高性能的 tag 系统等等。另外 Redis 也可以对存入的 Key-Value 设置 expire 时间,因此也可以被当作一 个功能加强版的 memcached 来用。Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。2、Redis 与 memcached 相比有哪些优势?memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰富的数据类型 redis 的速度比 memcached 快很多 redis 的速度比 memcached 快很多 redis 可以持久化其数据 redis 可以持久化其数据 3、Redis 支持哪几种数据类型?String、List、Set、Sorted Set、hashes 4、Redis 主要消耗什么物理资源?内存。5、Redis 有哪几种数据淘汰策略?noeviction: 返回错误当内存限制达到,并且客户端尝试执行会让更多内存被使用的命令。allkeys-lru: 尝试回收最少使用的键 (LRU), 使得新添加的数据有空间存放。(搜索结果收录于 2026 年 1 月 7 日)
FAQ
Redis 单线程为什么能处理高并发?
因为基于内存操作速度快,且使用 IO 多路复用模型,避免了线程上下文切换开销。
生产环境如何选择持久化方式?
建议混合使用 RDB 和 AOF,RDB 用于快速恢复,AOF 用于保证数据安全性,4.0 后支持 AOF preamble 优化。