首頁  >  文章  >  資料庫  >  golang redis客戶端怎麼連接

golang redis客戶端怎麼連接

WBOY
WBOY轉載
2023-05-29 09:14:08725瀏覽

實作了redis客戶端,包含一個連線池和redis pipleline

conn.go

func (c *conn) Do(cmd string, args ...interface {}) (interface{}, error){

if cmd != "" {    if err := c.writeCommand(cmd, args); err != nil {      return nil, c.fatal(err)    }  }    if err := c.bw.Flush(); err != nil {    return nil, c.fatal(err)  }      for i := 0; i <= pending; i++ {    var e error    if reply, e = c.readReply(); e != nil {      return nil, c.fatal(e)    }    if e, ok := reply.(Error); ok && err == nil {      err = e    }  }


方法封裝了一個要求的3個程序 Send, Flush and Receive

1,send 將請求寫到輸出緩衝

2, Flush將緩衝區的指令傳送到服務端

3,Receive 接收服務端的回應

https://godoc.org/github.com/ gomodule/redigo/redis#hdr-Pipelining

// conn is the low-level implementation of Conn

因為redis是文字協議,因此發送時需要依照redis協議序列化,接收的時候就依照redis協議反序列化。

客戶端發送指令的格式(型別):5種型別

    間隔符號,在Linux下方是\r\n,在Windows下是\n

#1. 簡單字串Simple Strings, 以" "加號開頭

      格式:字串\r\n

               字串無法轉換與LF(

#      eg: " OK\r\n"

#      注意:為了傳送二進位安全的字串,一般建議使用後面的 Bulk Strings類型

#2. 錯誤-"減號開頭

  格式:- 錯誤前綴 錯誤訊息 \r\n

               錯誤訊息不能包含CR或LF(是Erros會被當作異常來看待

      eg: "-Error unknow command 'foobar'\r\n"

3. 整數型# Integer, 以冒花":"

#  格式:: 數字 \r\n

      eg: ":1000\r\n"

4. 大字串型別Bulk Strings, 以"$"美元符號開頭,長度限制512M

  格式:$ 字串的長度 \r\n 字串 \r\n

                \r\n

                中使用或「中」()」上不允許換行);

#2); ##      eg: "$

6\r\nfoobar\r\n"    其中字串為foobar,而6就是foobar的字元長度

   $   \r\n\r\n"       空白字串

            "$-1\r\n"           null

5. 陣列型別         null

5. 數組型別         null

#5. 數位型別星號上#"*Arrays#"*

  格式:* 數組元素個數 \r\n 其他所有類型 (結尾不需要\r\n)

             注意:只有一個數字後面的\r\n是屬於該數組的,結尾的\r\n一般是元素的

      eg: "*0\r\n"      空數組

         $3\r\nbar\r\n"      陣列包含2個元素,分別是字串foo和bar

    "*3\r\n:1\r\n:2\r\n:3 \r\n"       陣列包含3個整數:1、2、3

            "*5\r\n:1\r\n:2\r\n:3r  "*5\r\n:1\r\n:2\r\n:3rrn:4\ r\n$6\r\nfoobar\r\n"  包含混合類型的陣列

#           "*-1\r\n"      \r\n:1\r\n:2\r\n:3\r\n*2\r\n Foo\r\n-Bar\r\n"   數組嵌套,外層陣列包含2個數組,整理後如下:

                 "*2\r\n

      *3\r\n:1\r\n:22\n:3\r\r\r\n:2

      *2\r\n Foo\r\n-Bar\r\n"

以上是golang redis客戶端怎麼連接的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除