美文网首页redis
Redis为什么这么快

Redis为什么这么快

作者: bxcs | 来源:发表于2021-07-17 23:42 被阅读0次

    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多路复用

    相关文章

      网友评论

        本文标题:Redis为什么这么快

        本文链接:https://www.haomeiwen.com/subject/dovgpltx.html