Redis協議規範(RESP),一篇即懂

序章

Redis 即REmoteDictionaryServer (遠程字典服務);數組

而Redis的協議規範是 Redis Serialization Protocol (Redis序列化協議)安全

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

協議以下:code

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

服務器在執行最後一條命令後,返回結果。字符串

特色

一、實現簡單
二、快速解析
三、可讀性好pip

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

提示:間隔符號,在Linux下是\r\n,在Windows下是\n
一、簡單字符串 Simple Strings, 以 "+"加號 開頭io

格式:+ 字符串 \r\ncli

字符串不能包含 CR或者 LF(不容許換行)序列化

eg: "+OK\r\n"

注意:爲了發送二進制安全的字符串,通常推薦使用後面的 Bulk Strings類型

二、錯誤 Errors, 以"-"減號 開頭

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

錯誤信息不能包含 CR或者 LF(不容許換行),Errors與Simple Strings很類似,不一樣的是Erros會被看成異常來看待

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

三、整數型 Integer, 以 ":" 冒號開頭

格式:: 數字 \r\n

eg: ":1000\r\n"

四、大字符串類型 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

五、數組類型 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個整數:一、二、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"
相關文章
相關標籤/搜索