お世話になっております。
しゃまとんです。
goでredisを使ったデータ永続化の際に、構造体を保存し取り出すメモです。
encoding/jsonを使うことで簡単に扱うことができます。
redisの操作に関してはredigoを利用しました。
以下、簡単なサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
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) } } |
実行結果は下になります。
1 2 3 4 |
$ 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} |
以上です。