原文:Redis线程模型 Redis基于Reactor模式开发了自己的网络事件处理器。被称为文件事件处理器,由于这个处理器是单线程的所以决定了redis是单线程的。 Redis线程模型的组成: 多个socket IO多路复用程序 scocket队列 文件事件分配器 事件处理器(连接应答处理器,命令请... ...
分类:
编程语言 时间:
2020-02-08 15:40:02
阅读次数:
86
Redis基于Reactor模式开发了自己的网络事件处理器。被称为文件事件处理器,由于这个处理器是单线程的所以决定了redis是单线程的。 Redis线程模型的组成: 多个socket IO多路复用程序 scocket队列 文件事件分配器 事件处理器(连接应答处理器,命令请求处理器,命令回复处理器) ...
分类:
编程语言 时间:
2020-02-08 15:21:43
阅读次数:
66
redis支持高并发的原因: redis是基于内存的,内存读写很快 redis的是单线程的,省去了很多多线程上下文切换的时间 redis虽然是单线程,但采用了IO多路复用技术,非阻塞IO,即多个网络连接复用一个线程,保证多连接的同时增加系统的吞吐量 redis的数据结构,采用hash,读取速度比较快 ...
分类:
编程语言 时间:
2020-02-08 13:28:35
阅读次数:
70
华清直播:http://www.makeru.com.cn/live/5413_1937.html 深度理解select、poll和epoll Linux IO模式及 select、poll、epoll详解 ...
分类:
其他好文 时间:
2020-01-28 14:16:32
阅读次数:
66
总结: 1. socket默认是否是阻塞的?阻塞体现在哪里? 2. 如何让socket编程非阻塞? client.setblocking(False) #非阻塞 3. IO多路复用作用? 检测多个socket是否发生变化。 操作系统检测socket是否发生变化,有三种模式: select:最多102 ...
分类:
编程语言 时间:
2020-01-22 16:27:17
阅读次数:
73
1、NIO和OIO 非阻塞NIO的提出弥补了OIO同步阻塞的不足。 OIO是面向流的,需要顺序的读取字节,不能随意改变读取指针的位置。 NIO是面向缓冲区的,引入Channel和Buffer,可以随意地读取Buffer中任意位置的数据。 NIO通过通道和通道的多路复用技术实现非阻塞(IO多路复用模型 ...
分类:
编程语言 时间:
2020-01-16 10:41:58
阅读次数:
67
select、poll、epoll之间的区别(搜狗面试) (1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差 ...
分类:
其他好文 时间:
2020-01-06 12:31:38
阅读次数:
61
IO多路复用是指同一个进程(线程)处理多个IO数据流。 注意和多线程+池模型的区别,多线程+池模型是指每个线程处理一个IO数据流。 多路复用的好处是 1,不会增加新的进程(线程),减少线程创建切换的开销。 2,当处理的消耗对比IO几乎可以忽略不计时,可以处理大量的并发IO,而不用消耗太多CPU/内存 ...
分类:
其他好文 时间:
2019-12-29 18:37:30
阅读次数:
59
一个输入操作通常包括2个阶段: 1,等待数据报准备好 2,把数据从内核空间复制到用户空间(进程空间) 比如一个套接字的输入操作: 1,等待数据从网络中到达到内核缓冲区中 2,把数据从内核缓冲区复制到进程缓冲区 阻塞式IO 非阻塞IO 多路复用IO 信号驱动IO 异步IO 五种IO模型的比较 ...
分类:
系统相关 时间:
2019-12-29 18:14:25
阅读次数:
106
1、首先我们谈一下为什么Redis快: 一、 Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快。 二、 再说一下IO,Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了线 ...
分类:
其他好文 时间:
2019-12-28 16:37:10
阅读次数:
121