您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。