Redis協議規范(RESP)


Redis 即 REmote Dictionary Server (遠程字典服務);

而Redis的協議規范是 Redis Serialization Protocol (Redis序列化協議)

該協議是用於與Redis服務器通信的,用的較多的是Redis-cli通過pipe與Redis服務器聯系;

    協議如下:

          客戶端以規定格式的形式發送命令給服務器;

          服務器在執行最后一條命令后,返回結果。

客戶端發送命令的格式(類型):5種類型

    間隔符號,在Linux下是\r\n,在Windows下是\n

1. 簡單字符串 Simple Strings, 以 "+"加號 開頭

      格式:+ 字符串 \r\n

               字符串不能包含 CR或者 LF(不允許換行)

      eg: "+OK\r\n"

      注意:為了發送二進制安全的字符串,一般推薦使用后面的 Bulk Strings類型

2. 錯誤 Errors, 以"-"減號 開頭

  格式:- 錯誤前綴 錯誤信息 \r\n

               錯誤信息不能包含 CR或者 LF(不允許換行),Errors與Simple Strings很相似,不同的是Erros會被當作異常來看待

      eg: "-Error unknow command 'foobar'\r\n"

3. 整數型 Integer, 以 ":" 冒號開頭

  格式:: 數字 \r\n

      eg: ":1000\r\n"

4. 大字符串類型 Bulk Strings, 以 "$"美元符號開頭,長度限制512M

  格式:$ 字符串的長度 \r\n 字符串 \r\n

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

      eg: "$6\r\nfoobar\r\n"    其中字符串為 foobar,而6就是foobar的字符長度

            "$0\r\n\r\n"       空字符串

            "$-1\r\n"           null

5. 數組類型 Arrays,以 "*"星號開頭

  格式:* 數組元素個數 \r\n 其他所有類型 (結尾不需要\r\n)

             注意:只有元素個數后面的\r\n是屬於該數組的,結尾的\r\n一般是元素的

      eg: "*0\r\n"      空數組

           "*2\r\n$2\r\nfoo\r\n$3\r\nbar\r\n"      數組包含2個元素,分別是字符串foo和bar

    "*3\r\n:1\r\n:2\r\n:3\r\n"       數組包含3個整數:1、2、3

           "*5\r\n:1\r\n:2\r\n:3\r\n:4\r\n$6\r\nfoobar\r\n"  包含混合類型的數組

           "*-1\r\n"         Null數組

           "*2\r\n*3\r\n:1\r\n:2\r\n:3\r\n*2\r\n+Foo\r\n-Bar\r\n"   數組嵌套,外層數組包含2個數組,整理后如下:

                 "*2\r\n

      *3\r\n:1\r\n:2\r\n:3\r\n

      *2\r\n+Foo\r\n-Bar\r\n"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM