Redigo--Go接続Redis
2888 ワード
CSDNブログ
作者:wkyb 608
Redigo--Go接続Redis
本文は主にgo Web開発におけるredisの操作を紹介する.
RedigoはgoがRedisに接続する拡張パッケージで、このパッケージを使用する場合はまず実行する必要があります.
インストールが完了したら、ファイルにredigoをインポートします.
接続redis
接続redisの例は次のとおりです.
データの書き込み
redisへのデータアクセスの例は次のとおりです.
データの読み取り
redisからデータを取得する例は次のとおりです.
このときエラーがなければ、前に保存したvalue:“bbb”を出力します.
データへんかん
valueのタイプがintの場合はredisを用いる.Int変換
valueのタイプがstringの場合はredisを用いる.String変換
valueのタイプがjsonである場合はredisを用いる.Byte変換
redisでjsonデータにアクセスする例は以下の通りです.
このとき、エラーが発生しなければ、前に保存した「111」「222」を出力します.
上の例を見て、redisの操作について知っているでしょう.
作者: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の操作について知っているでしょう.