zoukankan      html  css  js  c++  java
  • redis单线程问题

    1.redis的单线程指的是什么单线程?
    同一个时间点只处理一个客户端的连接,也就是redis网络模块的单线程。

    2.redis为什么设计成单线程
    具体作者怎么想的,我不知道,我说一下我的理解
    (1)redis用的是非阻塞IO,非阻塞I/O本身就可以是单线程处理多个请求
    (2)如果用多线程,就要考虑线程的上下文切换,和锁的请求和释放,这些操作也比较耗时,锁等待更容易把业务线程池占满
    (3)在我看来,Redis的设计理念就是短平快,在保证完全内存计算的情况下,能串行的地方就串行,在处理socket请求这块采用了非阻塞IO,并且是纯内存操作,一个event loop(请求事件)下来,几乎没有等待点

    3.redis是单线程为什么这么快
    (1) 纯内存操作
    (2) 异步非阻塞 I/O
    (3) 单线程,避免了上下文切换和线程锁

    4.服务性能三大杀手
    (1) 大量线程导致的线程切换开销
    (2) 请求和释放锁
    (3) 非必要的内存拷贝

  • 相关阅读:
    CF 640(div4)
    ABC 166
    CF 637 div2
    HDU-1875 畅通工程再续
    POJ1251-Jungle Roads
    POJ1797 Heavy Transportation
    Gym-101911K Medians and Partition
    Gym-101911A Coffee Break
    【Vue】Re09 Webpack 第一部分(介绍、安装、配置)
    【Vue】Re08 模块化
  • 原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/7523058.html
Copyright © 2011-2022 走看看