zoukankan      html  css  js  c++  java
  • Redis协议规范(RESP)

    Redis 即 REmote Dictionary Server (远程字典服务);

    而Redis的协议规范是 Redis Serialization Protocol (Redis序列化协议)

    该协议是用于与Redis服务器通信的,用的较多的是Redis-cli通过pipe与Redis服务器联系;

        协议如下:

              客户端以规定格式的形式发送命令给服务器;

              服务器在执行最后一条命令后,返回结果。

    客户端发送命令的格式(类型):5种类型

        间隔符号,在Linux下是 ,在Windows下是

    1. 简单字符串 Simple Strings, 以 "+"加号 开头

          格式:+ 字符串

                   字符串不能包含 CR或者 LF(不允许换行)

          eg: "+OK "

          注意:为了发送二进制安全的字符串,一般推荐使用后面的 Bulk Strings类型

    2. 错误 Errors, 以"-"减号 开头

      格式:- 错误前缀 错误信息

                   错误信息不能包含 CR或者 LF(不允许换行),Errors与Simple Strings很相似,不同的是Erros会被当作异常来看待

          eg: "-Error unknow command 'foobar' "

    3. 整数型 Integer, 以 ":" 冒号开头

      格式:: 数字

          eg: ":1000 "

    4. 大字符串类型 Bulk Strings, 以 "$"美元符号开头,长度限制512M

      格式:$ 字符串的长度 字符串

                   字符串不能包含 CR或者 LF(不允许换行);

          eg: "$6 foobar "    其中字符串为 foobar,而6就是foobar的字符长度

                "$0 "       空字符串

                "$-1 "           null

    5. 数组类型 Arrays,以 "*"星号开头

      格式:* 数组元素个数 其他所有类型 (结尾不需要 )

                 注意:只有元素个数后面的 是属于该数组的,结尾的 一般是元素的

          eg: "*0 "      空数组

               "*2 $2 foo $3 bar "      数组包含2个元素,分别是字符串foo和bar

        "*3 :1 :2 :3 "       数组包含3个整数:1、2、3

               "*5 :1 :2 :3 :4 $6 foobar "  包含混合类型的数组

               "*-1 "         Null数组

               "*2 *3 :1 :2 :3 *2 +Foo -Bar "   数组嵌套,外层数组包含2个数组,整理后如下:

                     "*2

          *3 :1 :2 :3

          *2 +Foo -Bar "

  • 相关阅读:
    c++中的explicit关键字
    数据结构简单要点总结(转)
    线程函数中访问成员变量的方法(转)
    C++中虚析构函数的作用(转)
    TransmitFile使用(发送文件)(转)
    静态分配和动态分配内存的区别(转)
    VC++ MFC 多线程及线程同步(转)
    CEdit & CRichEdit 使用技巧(转)
    memset用法详解(转)
    symbian 显示位图和SVG图(转)
  • 原文地址:https://www.cnblogs.com/tommy-huang/p/6051577.html
Copyright © 2011-2022 走看看