您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Redis面试中常被问到的重点有哪些
Redis作为高性能的键值存储系统,在面试中经常被深入考察。以下是Redis面试中的核心知识点整理,涵盖基础概念、数据结构、持久化机制、高可用方案等关键内容。
---
## 一、Redis基础概念
### 1. Redis是什么?
- **内存数据库**:数据主要存储在内存中,读写性能极高(10万+ QPS)
- **键值存储**:支持多种数据结构(String/Hash/List/Set/ZSet等)
- **单线程模型**:基于Reactor模式的事件驱动架构(6.0后支持多线程IO)
### 2. Redis vs Memcached
| 特性 | Redis | Memcached |
|---------------|--------------------------------|------------------------|
| 数据类型 | 5种核心+扩展类型 | 仅字符串 |
| 持久化 | 支持RDB/AOF | 不支持 |
| 集群模式 | Redis Cluster/Codis | 需客户端分片 |
| 线程模型 | 单线程(IO多线程可选) | 多线程 |
---
## 二、核心数据结构与使用场景
### 1. String(字符串)
- **底层实现**:SDS(Simple Dynamic String)
- **典型场景**:
- 缓存(用户会话、页面缓存)
- 计数器(`INCR article:readcount:1001`)
- 分布式锁(`SETNX lock:order 1 EX 30`)
### 2. Hash(哈希表)
- **底层结构**:ziplist(元素少时)/ hashtable
- **使用示例**:
```bash
HSET user:1001 name "张三" age 28
HGETALL user:1001
SINTER user:1001:friends user:1002:friends
)SRANDMEMBER lottery:users 3
)ZADD leaderboard 95 "player1"
)SAVE
/BGSAVE
save 900 1
)appendfsync always
(每次写操作)appendfsync everysec
(默认,每秒)appendfsync no
(由系统决定)BGREWRITEAOF
压缩日志文件SLAVEOF 127.0.0.1 6379
CLUSTER ADDSLOTS
分配槽位volatile-lru
:从已设置过期时间的键中淘汰最近最少使用的allkeys-lru
:从所有键中淘汰LRUSCAN
替代KEYS
# Python示例
pipe = r.pipeline()
for i in range(1000):
pipe.set(f"key:{i}", i)
pipe.execute()
slowlog-log-slower-than 10
slowlog-max-len 128
SLOWLOG GET 5
MULTI
SET book:1 "Redis实战"
INCR sales:count
EXEC
-- 限流脚本
local key = KEYS[1]
local limit = tonumber(ARGV[1])
local current = tonumber(redis.call('GET', key) or 0
if current + 1 > limit then
return 0
else
redis.call('INCR', key)
return 1
end
BF.ADD
)SET null 60
)EXPIRE key 3600 + rand(600)
)SETNX lock:key 1
)used_memory
)keyspace_hits/(keyspace_hits+keyspace_misses)
)connected_clients
)requirepass
)rename-command FLUSHALL ""
rename-command CONFIG ""
Redis为什么快?
如何实现分布式锁?
SETNX + EXPIRE
(Redlock算法)BigKey如何处理?
HSCAN
分批删除)UNLINK
)集群数据如何迁移?
MIGRATE
命令掌握以上知识点后,建议通过以下方式深化理解:
1. 动手搭建Redis集群环境
2. 使用redis-benchmark
进行压测
3. 阅读Redis核心源码(如dict.c/ae.c)
“`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。