go-redis 基于beego正确使用序列化存储数据和反序列化获取数据
1 安装go-redis 2 // 安装命令 3 go get github.com/gomodule/redigo/redis 4 // 导入使用 5 import( 6 "github.com/gomodule/redigo/redis" 7 ) 8 // go操作redis文档 9 https://godoc.org/github.com/gomodule/redigo/redis
序列化存储数据和反序列化获取数据
var aType []models.ArticleType // redis 在就获取,不再就存储 // conn, err := redis.Dial("tcp", ":6379") // if err != nil { // beego.Info("redis连接失败") // } // defer conn.Close() // reply, err := conn.Do("set", "atype", aType) // if err != nil { // beego.Info("redis存储失败") // } // beego.Info(reply) // 序列化与发序列化 conn, err := redis.Dial("tcp", ":6379") if err != nil { beego.Info("redis连接失败") } defer conn.Close() ok, _ := redis.Bool(conn.Do("EXISTS", "atype")) beego.Info(ok) if ok == true { ReadBuffer, _ := redis.Bytes(conn.Do("get", "atype")) beego.Info(ReadBuffer) dec := gob.NewDecoder(bytes.NewReader(ReadBuffer)) err = dec.Decode(&aType) if err != nil { beego.Info("获取不到解码后的数据:", err) } beego.Info(aType) } else { // 查询 o.QueryTable("ArticleType").All(&aType) // redis存储序列化的数据 var buffer bytes.Buffer enc := gob.NewEncoder(&buffer) err = enc.Encode(aType) reply, err := conn.Do("set", "atype", buffer.Bytes()) if err != nil { beego.Info("redis存储失败") } beego.Info(reply) }