zoukankan      html  css  js  c++  java
  • redis管道(Pipeline)

      Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:

    • 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。
    • 服务端处理命令,并将结果返回给客户端。

      Redis完整的请求交互流程图如下:

     

    • 客户端进程调用 write 将消息写到操作系统内核为套接字分配的发送缓冲 sendbuffer
    • 客户端操作系统内核将发送缓冲的内容发送到网卡,网卡硬件将数据通过「网际路由」送到服务器的网卡
    • 服务器操作系统内核将网卡的数据放到内核为套接字分配的接收缓冲 recv buffer
    • 服务器进程调用 read 从接收缓冲中取出消息进行处理。
    • 服务器进程调用 write 将响应消息写到内核为套接字分配的发送缓冲 send buffer
    • 服务器操作系统内核将发送缓冲的内容发送到网卡,网卡硬件将数据通过「网际路由」送到客户端的网卡
    • 客户端操作系统内核将网卡的数据放到内核为套接字分配的接收缓冲 recv buffer
    • 客户端进程调用 read 从接收缓冲中取出消息返回给上层业务逻辑进行处理。

      Redis 管道技术可以在服务端未响应时,客户端可以持续向服务端发送请求(当 client 使用 pipelining 发送命令时,redis server 必须将部分请求放到队列中),并最终一次性读取所有服务端的响应。

     

    参考: https://zhuanlan.zhihu.com/p/64381987

  • 相关阅读:
    KBEngine源码:EntityCall
    skynet 学习笔记-sproto模块(2)
    mongodb:为什么用mongodb
    编写高效服务器程序,需要考虑的因素
    b+树
    mysql:架构
    超越函数/微分方程 /积分中的技术/级数
    积分从入门到放弃<2>
    PyQt4 / PyQt5
    图形学算法:
  • 原文地址:https://www.cnblogs.com/ryjJava/p/14269087.html
Copyright © 2011-2022 走看看