redis如此之快,整体来说原因如下 绝大部分请求是纯粹的内存操作(非常快速) 采用单线程,避免了不必要的上下文切换和竞争条件 非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io ...
分类:
其他好文 时间:
2020-01-16 22:05:04
阅读次数:
175
1、NIO和OIO 非阻塞NIO的提出弥补了OIO同步阻塞的不足。 OIO是面向流的,需要顺序的读取字节,不能随意改变读取指针的位置。 NIO是面向缓冲区的,引入Channel和Buffer,可以随意地读取Buffer中任意位置的数据。 NIO通过通道和通道的多路复用技术实现非阻塞(IO多路复用模型 ...
分类:
编程语言 时间:
2020-01-16 10:41:58
阅读次数:
67
epoll详解 什么是epoll? epoll是为处理大批量句柄而作了改进的poll, 是性能最好的多路I/O就绪通知方法; 只有三个系统调用: epoll_create, epoll_ctl, epoll_wait; epoll_ctl - epoll的事件注册函数,它不同于select()是在监 ...
分类:
其他好文 时间:
2020-01-15 11:37:28
阅读次数:
76
Java中IO的模型分为三种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。 BIO【同步阻塞】 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建 ...
分类:
编程语言 时间:
2020-01-09 22:32:45
阅读次数:
76
1.redis是单进程单线程的。使用了I/O多路复用器,高并发情况下不存在数据安全问题;Memcache是单进程多线程的2.Redis存储K-V结构的数据,Value支持多种数据类型,有String,Hash,Set,SortedSet,List类型;Memcache仅支持简单的k-v结构3.Red ...
分类:
系统相关 时间:
2020-01-08 12:40:21
阅读次数:
94
Redis服务端对于命令的处理是单线程的,但是在I/O层面却可以同时面对多个客户端并发的提供服务,并发到内部单线程的转化通过多路复用框架实现 一个IO操作的完整流程是数据请求先从用户态到内核态,也就是操作系统层面,然后再调用操作系统提供的API,调用相应的设备去获取相应的数据。 当相应的设备准备好数 ...
分类:
其他好文 时间:
2020-01-06 14:41:18
阅读次数:
261
select、poll、epoll之间的区别(搜狗面试) (1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差 ...
分类:
其他好文 时间:
2020-01-06 12:31:38
阅读次数:
61
Selectors This module allows high-level and efficient I/O multiplexing, built upon the select module primitives. Users are 该模块允许高级和高效的I/O多路复用,在原select ...
分类:
其他好文 时间:
2020-01-05 15:27:29
阅读次数:
83
4.1 线程 每个线程是cpu使用的一个基本单元,它包括线程ID、程序计数器、寄存器组和堆栈。它与同一进程的其他线程共享代码段、数据段和其他操作系统资源。 多线程编程的优点:响应性、资源共享、经济、可伸缩性。 4.2 多核编程 对于单核系统,并发仅意味着线程随着时间交替执行,因为处理核只能同一时间执 ...
分类:
编程语言 时间:
2020-01-05 00:43:31
阅读次数:
118
Nginx Nginx 是一个强大的 Web 服务器软件,用于处理高并发的 HTTP 请求和作为反向代理服务器做负载均衡。具有高性能、轻量级、内存消耗少,强大的负载均衡能力等优势。 nginx 软件的特点 高性能: 一、epoll 多路复用 二丶master worker 进程模型 一个 maste ...
分类:
其他好文 时间:
2020-01-03 23:07:10
阅读次数:
90