91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis 協議的示例分析

發布時間:2021-12-20 10:47:23 來源:億速云 閱讀:157 作者:小新 欄目:大數據

這篇文章主要介紹Redis 協議的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Redis實例運行于單獨的進程,應用系統和Redis通過Redis協議進行交互。在Redis協議之上,客戶端和服務器可以實現多種典型的交互模式:串行的請求/響應模式、雙工的請求/響應模式(pipeline)、原子化的批量請求/響應模式(事務)、發布/訂閱模式、腳本化的批量執行(腳本模式)

客戶端/服務器協議

Redis的交互協議分為兩部分:網絡協議和序列化協議

網絡交互

Redis協議位于TCP連接之上,即客戶端和Redis實例保持雙工的連接

客戶端和服務器交互的內容是序列化后的相應類型的協議數據,服務器為每個客戶端建立對應的連接,在應用層維護一系列狀態保存在上圖的connection中,connection間相互無關聯。在Redis中,connection通過redisClient結構體實現

序列化協議

在Redis中,協議數據分為不同的類型,每種類型的數據均以CRLF(\r\n)結束,通過數據的首字符區分類型

inline command

這類數據表示Redis命令,首字符為Redis命令名的字符

simple string

首字符為'+',后續字符為strig的內容,且該string不能包含'\r'或'\n'兩個字符,最后以'\r\n'結束

simple string本身不含轉義,所以客戶端的反序列化效率很高,直接將'+'和最后兩個字節'\r\n'之間的內容拷貝即可

bulk string

對于string本身含有'\r'或'\n'的情況,解法有兩種:轉義和長度自描述。轉義反序列化效率低下,Redis采用的是長度自描述,稱為bulk string

bulk string的首字符為'$'緊隨其后的是string數據的長度'\r\n'之后緊跟著string的內容本身(可以包含包括'\r'和'\n'在內的特殊字符),最后以'\r\n'結束。

"$12\r\nhello\r\nworld\r\n"?這19個字節描述了hello\r\nworld這個兩行的string。

對于""空字符串和null,通過'$'之后的數字進行區分:

  • "$0\r\n\r\n"?這6個字節表示空字符串

  • "$-1\r\n"?這5個字節表示null

error

Redis中error類型的數據的內容就是一個普通的string,但是和普通的string的區別是error的首字符是'-'。客戶端直接通過首字符即可判斷本次交互是否出錯

integer

以':'開頭,緊跟著整形數字本身,最后以'\r\n'結尾。":13\r\n"表示整數13。

array

以'*'開頭,緊跟著數組的長度,'\r\n'之后就是數組中每個元素序列化的數據。"*2\r\n+abc\r\n:9\r\n"表示["abc", 9]。

數組長度為0或者-1分別表示空數組或null

數組元素本身也可以是數組,多級數組是樹狀結構,采用類似先序遍歷的方式序列化。 "*2\r\n*2\r\n:1\r\n:2\r\n*1\r\n+abc\r\n"表示[[1, 2],["abc"]]。

C/S使用的協議數據類型

客戶端發送給服務的類型:inline command、由bulk string組成的array。服務端發送給客戶端的類型為除了inline command之外的所有類型,并根據客戶端命令或者交互模式的不同進行確定

以上是“Redis 協議的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晋州市| 托克托县| 前郭尔| 长垣县| 金山区| 天津市| 图木舒克市| 萨嘎县| 滨海县| 宁强县| 垣曲县| 吴旗县| 河曲县| 鹤庆县| 平舆县| 遂宁市| 丰台区| 新绛县| 凌海市| 徐水县| 舟曲县| 清水县| 定日县| 华容县| 阳信县| 壶关县| 霍城县| 乃东县| 依安县| 泸定县| 东台市| 贡山| 九江市| 武平县| 伽师县| 大余县| 环江| 嵊州市| 徐闻县| 尼玛县| 南投县|