美文网首页
redis专题1:redis 高性能的原理-宏观层面

redis专题1:redis 高性能的原理-宏观层面

作者: 北交吴志炜 | 来源:发表于2018-12-15 16:02 被阅读0次

    基于四点

    1.内存操作,避免了磁盘io

    2.单线程处理网络请求,避免线程切换和竞争

    3.多路I/O复用

    4.Redis直接自己构建了VM 机制 ,一般的系统调用系统函数的话,会浪费一定的时间去移动和请求

    主要说一个I/O模型

    多路I/O复用具体的原理见原文链接https://blog.csdn.net/wxy941011/article/details/80274233

    依赖的是epoll IO多路复用模型

    epoll create的时候会建立一个evevtpoll对象,具体就是一个红黑树,一个双向链表,核心就是这两个数据结构。

    epoll_ctl时,如果增加socket句柄,则检查在红黑树中是否存在,存在立即返回,不存在则添加到树干上,然后向内核注册回调函数,如果这个句柄的中断到了,就把它放到准备就绪list链表里。(比较selector模式,每次只需要去就绪链表中处理事件即可,不需要轮询整个集合)

    epoll_wait时立刻返回准备就绪链表里的数据即可。

           1. epoll 没有最大并发连接的限制,上限是最大可以打开文件的数目,这个数字一般远大于 2048, 一般来说这个数目和系统内存关系很大  ,具体数目可以 cat /proc/sys/fs/file-max 察看。

      2. 效率提升, Epoll 最大的优点就在于它只管你“活跃”的连接 ,而跟连接总数无关,因此在实际的网络环境中, Epoll 的效率就会远远高于 select 和 poll 。

      3. 内存拷贝, Epoll 在这点上使用了“共享内存 ”,这个内存拷贝也省略了,selector/poll模式需要把fd集合从用户态拷贝到内核态,去检查是否有事件发生

    相关文章

      网友评论

          本文标题:redis专题1:redis 高性能的原理-宏观层面

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