• [redis] -- 为什么那么快


    • 1 完全基于内存
    • 2 数据结构简单,对数据操作也简单
    • 3 只有单线程,避免了不必要的上下文切换,也不存在竞态,不存在多进程或多线程导致的切换而消耗CPU,不用开了各种锁的问题
    • 4 使用多路IO复用模型,非阻塞IO
    • 5 使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样(是基于TCP的应用层协议 RESP(Redis Serialization Protocol)),Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求
      • RESP 优点(Redis 1.2后引入)
        • 易实现
        • 解析快
        • 二进制安全:不需要处理从一个进程传输到另一个进程的批量数据,因为它使用前缀长度来传输批量数据。

    关于多路I/O复用模型:

    • 多路I/O复用模型是利用select、poll、epoll可以同时监察多个流的I/O事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有I/O事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll 是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。
    • 这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路I/O复用技术可以让单线程高效的处理多个连接请求(尽量减少网络IO的时间消耗),且Redis在内存中操作数据的速度非常快,也就是说内存内的操作不会成为影响Redis性能的瓶颈,主要由以上几点造就了Redis 具有很高的吞吐量

    Redis Cluster使用不同的二进制协议(gossip)

    明明可以靠才华吃饭,非要靠脸~
  • 相关阅读:
    JavaScript 类私有方法的实现
    sublime小程序插件
    显示引擎innodb状态详解
    JAVA学习资料大全
    mongo-aggregate命令详解
    PHP error_reporting
    mongo基本命令
    php56升级后php7 mcrypt_encrypt 报错
    docker 基础命令
    敏捷建模:增强沟通和理解
  • 原文地址:https://www.cnblogs.com/lycsmzl/p/13213758.html
Copyright © 2020-2023  润新知