One minute
[golang]redisで構造体を扱ってみる
お世話になっております。
しゃまとんです。
goでredisを使ったデータ永続化の際に、構造体を保存し取り出すメモです。
encoding/json
を使うことで簡単に扱うことができます。
redisの操作に関してはredigoを利用しました。
以下、簡単なサンプルです。
package main
import (
"encoding/json"
"github.com/garyburd/redigo/redis"
"log"
)
type User struct {
Id int32
Name string
Score int32
}
func main() {
c, err := redis.Dial("tcp", ":6379")
if err != nil {
log.Fatal(err)
}
defer c.Close()
// struct to JSON
user := &User{Id: 1, Name: "name", Score: 2}
serialized, _ := json.Marshal(user)
log.Println("serialized : ", string(serialized))
// set
c.Do("SET", "test", serialized)
// get
data, _ := redis.Bytes(c.Do("GET", "test"))
log.Println("data : ", data)
// JSON to struct
if data != nil {
deserialized := new(User)
json.Unmarshal(serialized, deserialized)
log.Println("deserialized : ", deserialized)
}
}
実行結果は下になります。
$ go run main.go
serialized : {"Id":1,"Name":"name","Score":2}
data : [123 34 73 100 34 58 49 44 34 78 97 109 101 34 58 34 110 97 109 101 34 44 34 83 99 111 114 101 34 58 50 125]
deserialized : &{1 name 2}
以上です。