使用以下命令将结构体值编码为 []bytegob https://godoc.org/encoding/gob, json https://godoc.org/encoding/json或类似的编码包。将 [] 字节存储在 Redis 中。获取数据时逆向执行该过程。
假设 Redis 客户端具有以下方法:Set https://redis.io/commands/set and Get https://redis.io/commands/get,使用 JSON 包的代码将如下所示:
func set(c *RedisClient, key string, value interface{}) error {
p, err := json.Marshal(value)
if err != nil {
return err
}
return c.Set(key, p)
}
func get(c *RedisClient, key string, dest interface{}) error {
p, err := c.Get(key)
if err != nil {
return err
}
return json.Unmarshal(p, dest)
}
像这样使用它来保存值:
var v someType
if err := set(c, key, v); err != nil {
// handle error
}
并像这样检索一个值。请注意,指向该值的指针被传递给get
.
var v someType
if err := get(c, key, &v); err != nil {
// handle error
}
详细信息需要根据您使用的 Redis 客户端进行调整。
只要应用程序使用相同类型设置和获取给定键的值,这种方法就可以避免重复,并且是类型安全的。