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"