Redis经典面试题
一、redis是单线程架构还是多线程架构
redis整体来说并非只有一个线程(多线程),只是redis在处理网络请求,k/v读写操作这个过程是用一个线程来处理的,它的其他功能:持久化、异步删除、集群同步都是采用额外的线程来完成的。
二、单线程的redis为什么这么快
- 大部分操作基于内存,有高效的数据结构(简单动态字符串、双向链表、压缩列表、哈希表、跳跃表、整数数组)。
- 选择单线程,避免了多线程上下文切换和竞争。
- redis底层采用IO多路复用技术,能够保证大量并发下的效率,提高系统的吞吐量。
三、Redis6.x 之后为何引入了多线程?
Redis6.0 引入多线程主要是为了提高网络 IO 读写性能(Redis 的瓶颈并不在 CPU,而在内存和网络。)
虽然,Redis6.0 引入了多线程,但是 Redis 的多线程只是在网络数据的读写这类耗时操作上使用了, 执行命令仍然是单线程顺序执行。因此,你也不需要担心线程安全问题。
四、Redis6.x多线程的实现机制?

流程简述如下:
- 主线程负责接收建立连接请求,获取 Socket 放入全局等待读处理队列。
- 主线程处理完读事件之后,通过 RR(Round Robin)将这些连接分配给这些 IO 线程。
- 主线程阻塞等待 IO 线程读取 Socket 完毕。
- 主线程通过单线程的方式执行请求命令,请求数据读取并解析完成,但并不执行。
- 主线程阻塞等待 IO 线程将数据回写

最低0.47元/天 解锁文章
1194

被折叠的 条评论
为什么被折叠?



