久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Redis中通信協議RESP是怎么實現的

137次閱讀
沒有評論

共計 1709 個字符,預計需要花費 5 分鐘才能閱讀完成。

這篇文章主要介紹了 Redis 中通信協議 RESP 是怎么實現的,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

RESP

RESP(Redis Serialization Protocol) 是 Redis 序列化協議的簡寫,該協議是純文本協議,實現過程簡單,解析性能較好。

5 種單元類型

Redis 協議將傳輸的數據結構分為 5 種最小的單元類型,單元結束時統一加上回車換行符號 \r\n。

1. 單行字符串以 + 符號開頭

 例:+hello world\r\n

2. 多行字符串以 $ 符號開頭,后跟字符串長度

 例:$11\r\nhello world\r\n

多行字符串也可以用于表示單行字符串

3. 整數值以 : 符號開頭,后跟整數的字符串形式

 例::1024\r\n

4. 錯誤信息以 – 符號開頭

參數類型錯誤

 例: -WRONGTYPE Operation against a key holding the wrong kind of value\r\n

5. 數組以 * 號開頭,后跟數組的長度

 例:*3\r\n:l\r\n:2\r\n:3\r\n

兩種特殊類型

1. NULL

NULL 使用多行字符串表示,長度為 -1

 例:$-1\r\n

2. 空字符串

空串用多行字符串表示,長度填 0

 例:$0\r\n\r\n

空字符串有兩個 \r\n,因為兩個 \r\n 之間的就是空串

客戶端請求服務端

客戶端向服務器發送的指令只有一種格式,就是多行字符串數組。

例如一個簡單的 set 指令 set x x 會被序列化成下面的字符串

*3\r\n$3\r\nset\r\n$1\r\nx\r\n$1\r\nx\r\n

控制臺展示如下

*3
x

服務端響應客戶端

服務端響應客戶端信息時,將會使用多種數據結構,比客戶端發送到服務端時復雜很多,不過即便很復雜,也是上面提到的 5 種基本類型的組合。

單行字符串響應

127 . 0 .0.1: 6379  set x x 
OK

上面的 OK 就是單行字符串響應 (沒有雙引號),即 +OK

錯誤響應

127 . 0 . 0.1:6379  incr x 
(error} ERR value is not an integer or out of range

對一個字符串進行自增,服務器拋出錯誤提醒

-ERR value is not an integer or out of range

整數響應

127.0.0.1:6379  incr books 
(integer} 1

1 就是整數響應 :1

多行字符串響應

127.0.0.1:6379  get x
 x

上面用括號引起來的 x 就是多行字符串響應,即:

$1
x

數組響應

127.0.0.1:6379  hset info name bibabo
(integer) 1
127.0.0.1:6379  hset info age 18
(integer) 1
127.0.0.1:6379  hset info sex male
(integer) 1
127.0.0.1:6379  hgetall info
1)  name 
2)  bibabo 
3)  age 
4)  18 
5)  sex 
6)  male

上面的 hgetall 命令返回的就是一個數組,第 0、2、4 的字符串是 hash 表的 key,1、3、6 則是 value,客戶端負責將數組組裝成字典返回。

*6 
$4 
name 
$6 
bibabo 
$3 
age 
$2 
18 
$3 
sex 
$4 
male

嵌套

127.0.0.1:6379  scan 0 
1 ) 0  
2) 1 )  info  
2 ) books 
3 ) author

scan 命令用來掃描服務器包含的所有 key 列表,通過游標的形式一次獲取一部分,該命令返回的是一個嵌套數組,

數組第一個值表示游標的值,如果這個值為 0,說明已經遍歷完畢,如果不為 0,使用這個值作為下一次 scan 時的參數,

數組的第二個值又是一個數組,這個數組就是 key 的列表。

*2 
$4 
$5 
books 
$6 
author

感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“Redis 中通信協議 RESP 是怎么實現的”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-17發表,共計1709字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 胶南市| 临城县| 巴林左旗| 枣阳市| 焉耆| 将乐县| 新干县| 和林格尔县| 宣汉县| 海丰县| 确山县| 新营市| 互助| 炎陵县| 怀柔区| 白沙| 大庆市| 林周县| 永新县| 富源县| 绩溪县| 海丰县| 都江堰市| 丰县| 湘潭市| 信阳市| 小金县| 会宁县| 崇义县| 扶余县| 潜山县| 淄博市| 获嘉县| 新宁县| 衡阳市| 通化县| 黑河市| 女性| 武山县| 金堂县| 驻马店市|