码迷,mamicode.com
首页 > 编程语言 > 详细

redis单线程问题

时间:2017-09-14 23:43:44      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:切换   非阻塞i/o   非阻塞io   i/o   时间   非阻塞   避免   完全   释放   

1.redis的单线程指的是什么单线程?
同一个时间点只处理一个客户端的连接,也就是redis网络模块的单线程。

2.redis为什么设计成单线程
具体作者怎么想的,我不知道,我说一下我的理解
(1)redis用的是非阻塞IO,非阻塞I/O本身就可以是单线程处理多个请求
(2)如果用多线程,就要考虑线程的上下文切换,和锁的请求和释放,这些操作也比较耗时,锁等待更容易把业务线程池占满
(3)在我看来,Redis的设计理念就是短平快,在保证完全内存计算的情况下,能串行的地方就串行,在处理socket请求这块采用了非阻塞IO,并且是纯内存操作,一个event loop(请求事件)下来,几乎没有等待点

3.redis是单线程为什么这么快
(1) 纯内存操作
(2) 异步非阻塞 I/O
(3) 单线程,避免了上下文切换和线程锁

 

4.服务性能三大杀手
(1) 大量线程导致的线程切换开销
(2) 请求和释放锁
(3) 非必要的内存拷贝

redis单线程问题

标签:切换   非阻塞i/o   非阻塞io   i/o   时间   非阻塞   避免   完全   释放   

原文地址:http://www.cnblogs.com/fubaizhaizhuren/p/7523058.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!