复述,单线程执行速度这么快的原因

介绍

这篇文章主要介绍了复述,单线程执行速度这么快的原因,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

复述,之所以执行速度很快,主要依赖于以下几个原因:

(一)纯内存操作,避免大量访问数据库,减少直接读取磁盘数据,复述,将数据储存在内存里面,读写数据的时候都不会受到硬盘I/O速度的限制,所以速度快;

(二)单线程操作,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU、不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

(三)采用了非阻塞I/O多路复用机制

多路复用原理:

复述,单线程执行速度这么快的原因

用户首先将需要进行IO操作的套接字添加到选择中,然后阻塞等待选择系统调用返回。当数据到达时,插座被激活,选择函数返回。用户线程正式发起读请求,读取数据并继续执行。这样用户可以注册多个插座,然后不断地调用选择读取被激活的插座,复述,服务端将这些socke置于队列中,然后,文件事件分派器,依次去队列中取,转发到不同的事件处理器中,提高读取效率。

采用多路I/O复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗),多路I/O复用模型是利用选择、调查,epoll可以同时监察多个流的I/O事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有I/O事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作,从而提高效率。

(四)灵活多样的数据结构。

复述,内部使用一个redisObject对象来表示所有的关键和value.redisObject主要的信息包括数据类型,编码方式,数据指针,虚拟内存等。它包含字符串哈希,列表,设置,分类设置五种数据类型,针对不同的场景使用对应的数据类型,减少内存使用的同时,节省网络流量传输。

(五)持久化

由于复述的数据都存放在内存中,如果没有配置持久化,复述,重启后数据就全丢失了,于是需要开启复述的持久化功能,将数据保存到磁盘上,当复述,重启后,可以从磁盘中恢复数据.redis提供两种方式进行持久化,一种是RDB持久化(原理是将复述,在内存中的数据库记录定时转储到磁盘上的RDB持久化),另外一种是AOF(附加>感谢你能够认真阅读完这篇文章,希望小编分享复述,单线程执行速度这么快的原因内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!

复述,单线程执行速度这么快的原因