Redis 通訊協議簡單研究

1.Redis網絡通訊協議

Redis底層網絡通訊協議實際上是經過TCP來完成的。redis

2.Redis通訊協議

Redis的通訊協議首先是以行來劃分,每行以\r\n行結束。每一行都有一個消息頭,消息頭共分爲5種分別以下:
(+) 表示一個正確的狀態信息,具體信息是當前行+後面的字符。
(-) 表示一個錯誤信息,具體信息是當前行-後面的字符。
(*) 表示消息體總共有多少行,不包括當前行,*後面是具體的行數。
(\() 表示下一行數據長度,不包括換行符長度\r\n,\)後面則是對應的長度的數據。
(:) 表示返回一個數值,:後面是相應的數字節符。
舉個例子:緩存

*3\r\n  #消息一共有三行
$3\r\n #第一行有長度爲3
set\r\n #第一行的消息
$4\r\n  #第二行長度爲4 
demo\r\n #第二行的消息
$6\r\n #第三行長度爲6
123456\r\n #第三行的消息
+OK\r\n #操做成功

3.使用Wireshark 追蹤Redis通訊

本人使用的是mac電腦,如下都是在mac下的操做服務器

3.1安裝redis

(1)直接使用命令安裝網絡

brew install redis

(2)啓動redis-server架構

redis 默認開啓6379端口tcp

redis-server /usr/local/etc/redis.conf  #啓動的時候指定配置文件

效果圖:
redis-serveroop

(3)使用redis-cli 鏈接redis-serverui

redis 能夠看作是c/s架構的軟件,再打開一個終端輸入下面的指令spa

redis-cli -h 192.168.0.102 -p 6379

效果圖:
redis-cli
(4)簡單的操做一些
操做3d

keys *  # 查看所有的能夠
set demo 123 #設置k-v
TTL demo #查看demo的時間
flushall #清除所有的緩存
quit #退出客戶端

3.2 安裝wireshark

wireshark是付費的,能夠在網上查找體驗版(破解版),有條件的建議購買正版。

(1)打開wirshark:
wrieshark

我這個地方選擇的Loopback:lo0,由於我redis安裝到本地了,實際上redis-server和redis-cli 都在127.0.0.1上,要選擇該方式才能時間服務器端和客戶端通訊。若是咱們經過redis-cli鏈接的是遠程服務器上的redis-server,能夠選擇WI-FI:en0(我這裏是這個網卡,可根據自身電腦選擇相應的網卡)

(2) 追蹤redis-cli 鏈接到服務時候的通訊
咱們追蹤tcp流
追蹤tcp流
獲得以下結果
redis-cli.connection
咱們獲得都是以 *,$,:,+等等來標註的。關於鏈接的操做太過於複雜,沒有作詳細的研究,下面看下簡單的set指令。
redis-cli.set 能夠看出跟咱們文章剛開始舉得例子一致,redis就是採用這種通訊協議來通訊的,掌握了redis通訊協議,咱們能夠本身實現一個redis客戶端,這都是很簡單的。

相關文章
相關標籤/搜索