是一種高性能的Key-Value數據庫 NoSQL數據庫 緩存型數據庫 key-value型數據庫 錯誤的說法非關係型數據庫git
安裝go操做redis的包,命令以下:github
go get -u -v github.com/gomodule/redigo/redis
安裝完成後,回到家目錄建立test.go,把下面代碼複製到test.go裏面,編譯執行test.go,以後在redis中查找到鍵c1值爲hello,說明安裝成功redis
package main import ( "github.com/gomodule/redigo/redis") func main(){ conn,_ := redis.Dial("tcp", ":6379") defer conn.Close() conn.Do("set", "c1", "hello") }
redigo包的使用文檔https://godoc.org/github.com/gomodule/redigo/redis
sql
鏈接數據庫數據庫
Dial(network, address string)(conn,err)
執行數據庫的命令api
Send(commandName string, args ...interface{}) error Flush() error Receive() (reply interface{}, err error)
Send函數發出指令,flush將鏈接的輸出緩衝區刷新到服務器,Receive接收服務器返回的數據 緩存
示例:服務器
c.Send("SET", "foo", "bar") c.Flush()//把緩衝區命令發到服務器 v, err = c.Receive() // 接收set請求傳輸的數據
另外一種執行數據庫操做命令(經常使用)cookie
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)//解碼
視頻和資料直接評論獲取