redis为什么用单线程?为什么那么快?
什么是redis的单线程?redis为什么用单线程?为什么单线程Redis能那么快?下面本篇文章给大家分析分析,希望对大家有所帮助!
1.基本概念
【相关推荐:Redis视频教程】
2.redis为什么用单线程
多线程的开销
使用多线程可以增加系统吞吐率(每个请求),增加系统扩展性
无限的增加线程数,导致吞吐量下降
- 被多线程同时访问共享资源,比如共享的数据结构
- 为了保证线程安全,导致性能的牺牲
- 粗粒度的锁导致所有串行,系统的吞吐率随着线程的增加而增加
因此为了节省并发资源的管理,redis使用单线程,保证所有操作串行化
3.单线程的redis为什么快
4.socket
socket通信过程(网络IO处理+键值对读写+网络IO处理)
- SimpleKV 为了处理一个 Get 请求
- 需要监听客户端请求(bind/listen)
- 和客户端(代码)建立连接(accept)
- 从 socket 中读取请求(recv)
- 解析客户端发送请求(parse)
- 根据请求类型读取键值数据(get)
- 最后给客户端返回结果,即向 socket 中写回数据(send)
潜在的阻塞点
accept() 未能成功建立连接时,会一直阻塞\
recv() 从客户端读取数据时,会一直阻塞\
5.多路复用
Linux中的IO多路复用机制指一个线程处理多个IO流,select/poll
在单线程下,同时存在监听多个套接字和已连接套接字
具体实现
6.总结
redis真的是单线程吗
- 对网络 IO 和数据读写的操作采用了一个线程。
为什么用单线程
- 避免多线程开发的并发控制问题。
- 多路复用的 IO 模型密切相关。
单线程为什么这么快
更多编程相关知识,请访问:编程视频!!
以上就是redis为什么用单线程?为什么那么快?的详细内容,更多请关注其它相关文章!