redis

Redis为什么这么快

2021-07-17  本文已影响0人  bxcs

1、纯内存KV结果数据库,时间复杂度O(1)

2、单线程

    ① 不需要频繁创建和销毁线程

    ② 避免上下文切换

    ③ 避免资源竞争

    ④ 单线程已经够用,CPU已经不是redis性能瓶颈,内存和网络有可能是

3、异步非阻塞IO,多路复用

virtual memory 虚拟内存

32位系统的虚拟空间最大2^32=4G

64位系统的虚拟空间最大不是2^64=1024*1024TB = 1024ED

                       是2^48 = 256T

引入虚拟内存的意义

1、虚拟内存要比物理内存大,可以提供更大的地址空间,虚拟内存的地址是连续的,程序使用连接更加简单。

2、通过引入虚拟内容,可以对物理内存进行隔离。不同的进程在操作的时候互相不会影响。通过虚拟内存可以实现对主存的共享。可以把同一块的物理内存映射到不同的虚拟地址,可以实现内存的共享

虚拟内存分为:用户user空间和内核kernel空间

上下文切换

上下文,每个任务运行的时候,CPU必须知道它是从哪里加载,从哪里开始运行。系统必须先设置好CPU的寄存器和程序计数器。这些叫CPU的上下文。保存在kernel中。任务重新执行的时候会再把上下文加载进来,通过这样的方式它能保证任务原来的状态不受影响,这样就是任务看起来是连续的。

上下文的切换是一个很消耗资源的操作。redis使用单线程避免了上下文切换带来的资源操作

进程的阻塞

正在运行的进程会提出对系统服务的请求,比如IO的操作。由于某些原因它没有及时得到系统的响应,这个进程它会把自己做成一个阻塞的状态。并且等待某一些事件出现之后他会被唤醒。进程在阻塞的时候是不会占用CPU资源的

文件描述符File Descriptor

linux操作系统是基于文件的操作系统。linux操作系统中FD标识文件对象。FD是内核为了高效的管理已经打开的文件所创建的索引。执行IO操作都是通过FD执行IO操作的。

FD非负整数。

0 标准的输入,键盘

1 标准的输出,显示器

2 标准错误输出,显示器

IO多路复用

上一篇下一篇

猜你喜欢

热点阅读