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)

で取得。