Redis用的是文本協議,簡單,易於理解,一目明瞭。
協議規範:
①協議將傳輸的結構數據分爲5種最小單元類型,單元結束時統一加上回車換行符號\r\n。
②單行字符串以+符號開頭:+hello\r\n
③多行字符串以$符號開頭,後跟字符串長度:$11\r\nhello world\r\n
④整數值以:符號開頭,後跟整數的字符串形式::1024\r\n
⑤錯誤消息以-符號開頭:-WRONGTYPE Operation against a key holding the wrong kind of value
⑥數組以*號開頭,後跟數組的長度:*3\r\n:1\r\n:2\r\n:3\r\n
⑦NULL用多行字符串表示,不過長度要寫成-1:$-1\r\n
⑧空串用多行字符串表示,長度填 0:$0\r\n\r\n。注意這裏有兩個\r\n。爲什麼是兩個? 因爲兩個\r\n之間,隔的是空串。
客戶端向服務器發送的指令只有一種格式,多行字符串數組。比如一個簡單的set指令set author codehole會被序列化成下面的字符串:*3\r\n$3\r\nset\r\n$6\r\nauthor\r\n$8\r\ncodehole\r\n
服務器向客戶端回覆的響應也是基於上述5種進本類型組合的數據結構。