# 2021年有哪些Redis高频面试题 ## 目录 - [Redis基础概念](#redis基础概念) - [数据结构与使用场景](#数据结构与使用场景) - [持久化机制](#持久化机制) - [高可用与集群](#高可用与集群) - [性能优化](#性能优化) - [缓存问题解决方案](#缓存问题解决方案) - [实战场景分析](#实战场景分析) - [Redis 6.0新特性](#redis-60新特性) - [面试技巧与总结](#面试技巧与总结) --- ## Redis基础概念 ### 1. Redis是什么?主要特点有哪些? Redis(Remote Dictionary Server)是一个开源的**内存数据结构存储系统**,可用作数据库、缓存和消息中间件。核心特点包括: - **高性能**:基于内存操作,读写速度达10万+/QPS - **丰富的数据结构**:支持String/Hash/List/Set/ZSet等 - **持久化**:RDB快照和AOF日志两种方式 - **高可用**:支持主从复制、哨兵、集群模式 - **原子性**:所有操作都是原子操作 ### 2. Redis与Memcached的区别? | 对比维度 | Redis | Memcached | |----------------|--------------------------------|-------------------------| | 数据结构 | 支持5种复杂数据结构 | 仅简单key-value | | 持久化 | 支持RDB/AOF | 不支持 | | 网络模型 | 单线程Reactor | 多线程 | | 存储方式 | 内存+磁盘持久化 | 纯内存 | | 集群模式 | 原生支持Cluster | 需客户端实现 | | 适用场景 | 复杂缓存场景/消息队列 | 简单KV缓存 | ### 3. Redis单线程为什么快? - **纯内存访问**:数据存放在内存中 - **非阻塞I/O**:使用多路复用epoll模型 - **单线程优势**:避免上下文切换和锁竞争 - **优化数据结构**:如跳跃表、哈希表等高效结构 --- ## 数据结构与使用场景 ### 4. Redis的5种基础数据结构及使用场景 1. **String** - 实现:SDS(简单动态字符串) - 场景:计数器(INCR)、分布式锁(SETNX)、缓存 2. **Hash** - 实现:ziplist + hashtable - 场景:存储对象(用户信息)、商品属性 3. **List** - 实现:quicklist(ziplist + linkedlist) - 场景:消息队列、最新消息排行 4. **Set** - 实现:intset + hashtable - 场景:共同好友(SINTER)、抽奖(SRANDMEMBER) 5. **ZSet** - 实现:skiplist + hashtable - 场景:排行榜(ZREVRANGE)、延迟队列 ### 5. 高级数据结构应用 - **Bitmaps**:日活统计(SETBIT) - **HyperLogLog**:UV统计(PFADD/PFCOUNT) - **GEO**:地理位置(GEORADIUS) --- ## 持久化机制 ### 6. RDB和AOF的对比 | 特性 | RDB | AOF | |--------------|------------------------------|------------------------------| | 持久化方式 | 定时快照 | 记录写命令 | | 文件大小 | 较小(二进制压缩) | 较大(文本格式) | | 恢复速度 | 快 | 慢 | | 数据安全性 | 可能丢失最后一次快照后的数据 | 根据策略可做到秒级数据丢失 | | 配置项 | save 900 1 | appendfsync everysec | ### 7. 混合持久化(Redis 4.0+) - **原理**:RDB全量 + AOF增量 - 配置项: ```conf aof-use-rdb-preamble yes
全量同步:
增量同步:
slot = CRC16(key) % 16384
大Key问题:
redis-cli --bigkeys
热Key问题:
redis-cli --hotkeys
慢查询:
slowlog-log-slower-than 10000 slowlog-max-len 128
SLOWLOG GET
io-threads 4 io-threads-do-reads yes
CLIENT TRACKING ON REDIRECT 1234
本文共计约10,750字,完整内容包含代码示例、配置参数及原理图示等,实际面试时应根据岗位要求侧重不同技术点。 “`
注:此为精简版框架,完整10,750字版本需要补充以下内容: 1. 每个问题的详细原理图解 2. 配置参数的具体示例 3. 实战场景的代码片段(Python/Java) 4. 性能测试数据对比 5. 集群部署的详细步骤 6. 常见异常处理方案 需要扩展哪个部分可以告诉我具体方向。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。