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

Redis 協(xié)議的特點(diǎn)

Redis 協(xié)議在一下三個(gè)目標(biāo)之間進(jìn)行折中:

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

Redis 協(xié)議相當(dāng)簡(jiǎn)單,當(dāng)閱讀Redis協(xié)議后,我有自己實(shí)現(xiàn)Redis協(xié)議的想法。本文主要介紹Redis協(xié)議,下篇會(huì)用Rust語(yǔ)言實(shí)現(xiàn)Redis。

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

本文使用\r\n表示回車字符(ASCII碼13)和換行字符(ASCII碼10)。字符不用引號(hào),使用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. 簡(jiǎn)單字符串

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

4. 錯(cuò)誤字符串

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

5. 整數(shù)

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

6. 批量字符串

整數(shù),發(fā)送內(nèi)容以$開頭。批量字符串返回二進(jìn)制安全的字符串。比如客戶端發(fā)GET name,服務(wù)端返回yang。服務(wù)端傳送的內(nèi)容是$4\r\nyang\r\n。其中,第一個(gè)是$,接下來是實(shí)際回復(fù)長(zhǎng)度的數(shù)字值4,之后跟\r\n,再后面跟實(shí)際回復(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ù)組長(zhǎng)度是2,后面有兩條數(shù)據(jù)。本例批量數(shù)組包含兩個(gè)批量字符串。

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

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

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