Redis Go語言與Redis數據庫交互


安裝

go get github.com/gomodule/redigo/redis

安裝完成后,可以自己創建一個 go 文件:test.go

內容如下:

package main

import "github.com/gomodule/redigo/redis"

func main(){
    conn, _ := redis.Dial("tcp", ":6379")
    defer conn.Close()
    conn.Do("set", "c1", "hello")
}

然后編譯運行該文件,之后如果在 redis 中查找到鍵 “c1” 的值為 “hello”,說明安裝成功。

操作方法

Go 操作 Redis 文檔:https://godoc.org/github.com/gomodule/redigo/redis

連接數據庫

Dial(network, address string) (conn, err)

例:

redis.Dial("tcp", ":6379")

執行數據庫操作命令

	Send(commandName string, args ...interface{} error
    Flush() error
    Receive() (reply interface{}, err error)

Send 函數發出指令, Flush 將連接的輸出緩沖區刷新到服務器,Receive 接收服務器返回的數據

例:

conn.Send("SET", "foo", "bar")
conn.Send("GET", "foo")
conn.Flush()  // 把緩沖區命令發到服務器
conn.Receive()  // 接收 set 請求返回的數據
v, err := conn.Receive()  // 接收 get 請求傳輸的數據

另一種執行數據庫操作命令(常用)

Do(commandName string, args ...interface{}) (reply interface{}, err error)

reply helper functions (回復助手函數)

Bool,Int,Bytes,map,String,Strings 和 Values 函數將回復轉換為特定類型的值。

為了方便地包含對連接 Do 和 Receive 方法的調用,這些函數采用了類型為 error 的第二個參數。如果錯誤是非 nil,則輔助函數返回錯誤。如果錯誤為 nil,則該函數將回復轉換為指定的類型:

exists, err := redis.Bool(c.Do("EXISTS", "foo"))
if err != nil {
	//處理錯誤代碼
}
reflect.TypeOf(exists)  //打印exists類型

Scan 函數

func Scan(src [] interface {},dest ... interface {}) ([] interface {},error)

Scan 函數從 src 復制到 dest 指向的值。

Dest 參數的值必須是整數,浮點數,布爾值,字符串,[]byte,interface{} 或這些類型的切片。Scan 使用標准的 strconv 包將批量字符串轉換為數字和布爾類型。

例:

var value1 int
var value2 string
reply, err := redis.Values(c.Do("MGET", "key1", "key2"))
if err != nil {
    //處理錯誤代碼
}
if _, err := redis.Scan(reply, &value1, &value2); err != nil {
    // 處理錯誤代碼
}

與項目結合

序列化與反序列化

序列化(字節化)

var buffer bytes.Buffer  // 容器
enc := gob.NewEncoder(buffer)  // 編碼器
err := enc.Encode(dest)  // 編碼

反序列化(反字節化)

dec := gob.NewDecoder(bytes.NewReader(buffer.bytes()))  // 解碼器
dec.Decode(src)  // 解碼

李培冠博客

歡迎訪問我的個人網站:

李培冠博客:lpgit.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM