zoukankan      html  css  js  c++  java
  • Redis【一】 RESP协议

    https://redis.io/topics/protocol

    RESP:redis序列化协议

    client-server交流

    二进制安全的

    网络层

    client端建立tcp连接到Server port 6379,使用TCP连接

    除了

    • 管道通信,一次可发送多条命令,然后等待回复
    • pub/sub

    以外,是简单的request-response模型

    RESP怎么使用的

    client发送命令到redis server,使用字符串块的数组
    server应答,根据命令的实现,返回相应的resp响应类型

    在resp中,一些数据的类型是依赖数据的第一个byte:
    简单字符串,reply的第一个byte是+
    Errors第一个byte是-
    Integers第一个byte是:
    Bulk Strings 第一个byte是$
    Arrys第一个byte是*

    一个请求的协议中,不同的部分,使用 分隔

    举个Intergers的例子

    reply:":1000 "
    数字的范围是有符号64位数字,和有符号long一样,
    exists返回数字1表示存在,0不存在,incr返回incr后的数字,llen返回长度,sismember返回1表示true,0表示false

    Bulk Strings

    目的是表示二进制安全的String,可长达512MB
    "$6 foobar " foobar
    "$0 " 空串
    "$-1 " 表示Null

    RESP Arrays
    client向server发送的是Arrays,*后面会跟一个数字,表示数组长度

    "0 " empty array
    "
    2 $3 foo $3 bar " "foo" 和 "bar"
    "*3 :1 :2 :3 " 1 和 2 和 3

    *3
    $3
    foo
    $-1 空的元素
    $3
    bar -> ["foo",nil,"bar"]

    Arrays可以糅合多种类型

    高性能解析器for Redis协议

    • 使用前置长度来转换bulk data,因此不用扫描payload(有效载荷)
    • 块数据和多块数据长度可以和查找CR( )时一起获取
  • 相关阅读:
    立体匹配算法(转载)
    校招总结
    tcpip概述
    Matlab2014a 提示未找到支持的编译器或 SDK的解决方法
    CSS3 实现简单轮播图
    css3实现switch开关效果
    Sass的使用和基础语法
    Git的安装和使用记录
    jQuery淡入淡出效果轮播图
    JavaScript焦点轮播图
  • 原文地址:https://www.cnblogs.com/windliu/p/9125379.html
Copyright © 2011-2022 走看看