Redigo--Go接続Redis

2888 ワード

CSDNブログ
作者:wkyb 608
Redigo--Go接続Redis
本文は主にgo Web開発におけるredisの操作を紹介する.
RedigoはgoがRedisに接続する拡張パッケージで、このパッケージを使用する場合はまず実行する必要があります.
go get github.com/garyburd/redigo/redis

インストールが完了したら、ファイルにredigoをインポートします.
接続redis
接続redisの例は次のとおりです.
import (  
    "fmt"  
    //   redigo     
    "github.com/garyburd/redigo/redis"  
)  
//        redis       
host := beego.AppConfig.String("redis_host")  
db, _ := beego.AppConfig.Int("redis_db")  
// tcp  redis  
rs, err := redis.Dial("tcp", host)  
//           
defer rs.Close()  
//      ,       ,    
if err != nil {  
    fmt.Println(err)  
    fmt.Println("redis connect error")  
    return  
}  
//   db  
rs.Do("SELECT", db)   

データの書き込み
redisへのデータアクセスの例は次のとおりです.
key := "aaa"  
value := "bbb"  
//   redis   Do  ,           (   ),          key、value、     
//   2   ,        ,    1,    0;          
n, err := rs.Do("SETNX", key, value)  
//           
if err != nil {  
    fmt.Println(err)  
    return  
}  
//    n    int64 ,    1 0    int64        
if n == int64(1) {  
    //        24    
    n, _ := rs.Do("EXPIRE", key, 24*3600)  
    if n == int64(1) {  
        fmt.Println("success")  
    }  
} else if n == int64(0) {  
    fmt.Println("the key has already existed")  
}  

データの読み取り
redisからデータを取得する例は次のとおりです.
key := "aaa"  
//   Do ,                 
//       value string  ,   redis.String      string    
value, err := redis.String(rs.Do("GET", key))  
if err != nil {  
    fmt.Println("fail")  
}  
fmt.Println(value)  

このときエラーがなければ、前に保存したvalue:“bbb”を出力します.
データへんかん
valueのタイプがintの場合はredisを用いる.Int変換
valueのタイプがstringの場合はredisを用いる.String変換
valueのタイプがjsonである場合はredisを用いる.Byte変換
redisでjsonデータにアクセスする例は以下の通りです.
import "encoding/json"  
import "fmt"  
  
//  json    
key := "aaa"  
imap := map[string]string{"key1": "111", "key2": "222"}  
//  map   json    
value, _ := json.Marshal(imap)  
//   redis  
n, err := rs.Do("SETNX", key, value)  
if err != nil {  
    fmt.Println(err)  
}  
if n == int64(1) {  
    fmt.Println("success")  
}  
  
  
//  json    
//    imap       
var imap map[string]string  
key := "aaa"  
// json   go  []byte  ,     redis.Bytes    
value, err := redis.Bytes(rs.Do("GET", key))  
if err != nil {  
    fmt.Println(err)  
}  
//  json   map    
errShal := json.Unmarshal(value, &imap)  
if errShal != nil {  
    fmt.Println(err)  
}  
fmt.Println(imap["key1"])  
fmt.Println(imap["key2"])  

このとき、エラーが発生しなければ、前に保存した「111」「222」を出力します.
上の例を見て、redisの操作について知っているでしょう.