Redis 面试题, redis 为什么这么快?
Redis 面试题, redis 为什么这么快?
QA
Step 1
Q:: Redis 为什么这么快?
A:: Redis 之所以这么快,主要有以下几个原因:
1. **内存操作**:Redis 是一个内存数据库,所有数据都存储在内存中,读写操作不需要磁盘 I/
O。
2.
单线程模型:Redis 使用单线程模型避免了多线程的上下文切换和锁竞争问题。
3.
高效的数据结构:Redis 使用了高度优化的数据结构,如字符串、哈希表、列表、集合和有序集合等,所有这些数据结构都经过优化以确保操作的高效性。
4. **I/O 多路复用机制**:Redis 使用了 epoll/kqueue/select 等 I/
O 多路复用技术,使得其能够处理大量的并发连接。
5.
编写的 C 语言:Redis 使用 C 语言编写,尽量减少了 CPU 的指令数,提升了性能。
Step 2
Q:: Redis 的数据结构有哪些?
A:: Redis 提供了五种主要的数据结构:
1.
字符串(String):可以存储任何类型的数据,包括整数、浮点数和字符串。
2.
哈希表(Hash):键值对集合,适合存储对象。
3.
列表(List):双向链表,可以进行快速的头尾插入和删除操作。
4.
集合(Set):无序集合,支持快速的插入、删除和查找操作。
5.
有序集合(Sorted Set):带有分数的集合,可以根据分数进行排序。
Step 3
Q:: Redis 持久化机制有哪些?
A:: Redis 提供了两种主要的持久化机制:
1.
快照(RDB):在指定的间隔时间内,将内存中的数据快照保存到磁盘。
2.
追加日志(AOF):记录每次写操作,并定期将日志文件重写,合并旧的日志文件,确保数据持久化。
Step 4
Q:: Redis 的过期策略是什么?
A:: Redis 提供了三种过期策略:
1.
定期删除:每隔一段时间随机抽取一部分键检查是否过期,并删除。
2.
惰性删除:只有当访问某个键时,才检查其是否过期,如果过期则删除。
3.
主动删除:内存不足时,通过内存淘汰策略删除部分数据。
Step 5
Q:: Redis 的内存淘汰策略有哪些?
A:: Redis 提供了几种内存淘汰策略:
1. **volatile-
lru**:从设置了过期时间的键中淘汰最近最少使用的键。
2. **allkeys-
lru**:从所有键中淘汰最近最少使用的键。
3. **volatile-
random**:从设置了过期时间的键中随机淘汰键。
4. **allkeys-
random**:从所有键中随机淘汰键。
5. **volatile-
ttl**:从设置了过期时间的键中淘汰 TTL 最短的键。
6.
noeviction:当内存不足时,不进行淘汰操作,而是直接返回错误。