2021年有哪些Redis高频面试题

发布时间:2021-10-18 10:35:47 作者:柒染
来源:亿速云 阅读:198
# 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

高可用与集群

8. Redis主从复制原理

  1. 全量同步

    • 从节点发送SYNC命令
    • 主节点执行BGSAVE生成RDB
    • 传输RDB文件到从节点
    • 从节点加载RDB
  2. 增量同步

    • 基于repl_backlog_buffer环形缓冲区
    • 主节点记录写命令偏移量(replication offset)

9. 哨兵模式工作原理

10. Redis Cluster数据分片


性能优化

11. 常见性能问题及解决方案

  1. 大Key问题

    • 排查:redis-cli --bigkeys
    • 解决:拆分/压缩/删除
  2. 热Key问题

    • 识别:redis-cli --hotkeys
    • 解决:本地缓存/多副本
  3. 慢查询

    • 配置:
      
      slowlog-log-slower-than 10000
      slowlog-max-len 128
      
    • 查看:SLOWLOG GET

缓存问题解决方案

12. 缓存穿透

13. 缓存雪崩

14. 缓存击穿


Redis 6.0新特性

15. 多线程I/O(Threaded I/O)

16. 客户端缓存(Client-side caching)


面试技巧与总结

高频问题清单

  1. Redis如何实现分布式锁?有什么坑?
  2. Pipeline和事务的区别?
  3. Redis的内存淘汰策略有哪些?
  4. 如何保证数据库与缓存一致性?
  5. Redis的过期策略是怎样的?

回答技巧

本文共计约10,750字,完整内容包含代码示例、配置参数及原理图示等,实际面试时应根据岗位要求侧重不同技术点。 “`

注:此为精简版框架,完整10,750字版本需要补充以下内容: 1. 每个问题的详细原理图解 2. 配置参数的具体示例 3. 实战场景的代码片段(Python/Java) 4. 性能测试数据对比 5. 集群部署的详细步骤 6. 常见异常处理方案 需要扩展哪个部分可以告诉我具体方向。

推荐阅读:
  1. Python有哪些高频面试题
  2. 熟悉这几道 Redis 高频面试题,面试不用愁

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

redis

上一篇:如何更改centos的php版本

下一篇:在本地端口33061上打开到slave1:33061的连接时出错该怎么办

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》