Redis底層網絡通訊協議實際上是經過TCP來完成的。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 #操做成功
本人使用的是mac電腦,如下都是在mac下的操做服務器
(1)直接使用命令安裝網絡
brew install redis
(2)啓動redis-server架構
redis 默認開啓6379端口tcp
redis-server /usr/local/etc/redis.conf #啓動的時候指定配置文件
效果圖:
oop
(3)使用redis-cli 鏈接redis-serverui
redis 能夠看作是c/s架構的軟件,再打開一個終端輸入下面的指令spa
redis-cli -h 192.168.0.102 -p 6379
效果圖:
(4)簡單的操做一些
3d
keys * # 查看所有的能夠 set demo 123 #設置k-v TTL demo #查看demo的時間 flushall #清除所有的緩存 quit #退出客戶端
wireshark是付費的,能夠在網上查找體驗版(破解版),有條件的建議購買正版。
(1)打開wirshark:
我這個地方選擇的Loopback:lo0,由於我redis安裝到本地了,實際上redis-server和redis-cli 都在127.0.0.1上,要選擇該方式才能時間服務器端和客戶端通訊。若是咱們經過redis-cli鏈接的是遠程服務器上的redis-server,能夠選擇WI-FI:en0(我這裏是這個網卡,可根據自身電腦選擇相應的網卡)
(2) 追蹤redis-cli 鏈接到服務時候的通訊
咱們追蹤tcp流
獲得以下結果
咱們獲得都是以 *,$,:,+等等來標註的。關於鏈接的操做太過於複雜,沒有作詳細的研究,下面看下簡單的set指令。
能夠看出跟咱們文章剛開始舉得例子一致,redis就是採用這種通訊協議來通訊的,掌握了redis通訊協議,咱們能夠本身實現一個redis客戶端,這都是很簡單的。