Redis 協(xié)議(上)協(xié)議介紹

Redis 協(xié)議的特點

Redis 協(xié)議在一下三個目標之間進行折中:

  • 易于實現(xiàn)
  • 可以高效地被計算機分析
  • 可以很容易地被人類讀懂

Redis 協(xié)議相當簡單,當閱讀Redis協(xié)議后,我有自己實現(xiàn)Redis協(xié)議的想法。本文主要介紹Redis協(xié)議,下篇會用Rust語言實現(xiàn)Redis。

Redis 的數(shù)據(jù)類型

本文使用\r\n表示回車字符(ASCII碼13)和換行字符(ASCII碼10)。字符不用引號,使用Markdown的方框框住。

1. Null

空數(shù)據(jù),發(fā)送內(nèi)容$-1\r\n。比如客戶端發(fā)送GET key_not_exists,服務(wù)端返回(nil),發(fā)送的內(nèi)容是$-1\r\n

2. 空數(shù)組

空數(shù)組,發(fā)送內(nèi)容*-1\r\n。

3. 簡單字符串

簡單字符串,發(fā)送內(nèi)容以+開頭。比如回復(fù)OK,發(fā)送的內(nèi)容是+OK\r\n。簡單的字符串適合返回可打印字符。

4. 錯誤字符串

錯誤字符串,發(fā)送內(nèi)容以-開頭。比如某個回復(fù)發(fā)送的內(nèi)容是-Expected 2 arguments for SET command\r\n

5. 整數(shù)

整數(shù),發(fā)送內(nèi)容以:開頭。用來發(fā)送一個整數(shù),比如:21\r\n,或者布爾類型,:0\r\n表示假,:1\r\n表示真。

6. 批量字符串

整數(shù),發(fā)送內(nèi)容以$開頭。批量字符串返回二進制安全的字符串。比如客戶端發(fā)GET name,服務(wù)端返回yang。服務(wù)端傳送的內(nèi)容是$4\r\nyang\r\n。其中,第一個是$,接下來是實際回復(fù)長度的數(shù)字值4,之后跟\r\n,再后面跟實際回復(fù)數(shù)據(jù),最后是\r\n

7. 批量數(shù)組

非空數(shù)組,發(fā)送內(nèi)容以*開頭。比如客戶端發(fā)送GET name,內(nèi)容是*2\r\n$3\r\nget\r\n$4\r\nname\r\n。表示批量數(shù)組長度是2,后面有兩條數(shù)據(jù)。本例批量數(shù)組包含兩個批量字符串。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容