Goのsliceをredisで管理する
Goで作成したSliceをredisで管理しようとして結構はまったのでメモ。
商品のSliceを作成し、それをredisに入れて取り出すところまで
import ( "encoding/json" "github.com/garyburd/redigo/redis" ) type Product Struct { Id uint Title string Price uint } type ProductData Struct { ProductSlice []Product } productData := ProductData{} product := model.Product{} // 商品データを取得してSliceに追加 product.findProducts(&productData.ProductSlice) // jsonに変換 bytes, _ := json.Marshal(productData) //jsonをredisに追加 conn.Do("SADD", "key", bytes)
これでredisに保存完了
取り出すときは
//redisから取得 data, _ := redis.Values(conn.Do("SMEMBERS", "key")) bytes, _ := data[0].([]byte) productData := ProductData{} // jsonからsliceに戻す json.Unmarshal(bytes, &productData)
で取得。