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多路复用
网友评论