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)
    }
posted @ 2020-01-11 17:15  A毛毛  阅读(1260)  评论(0编辑  收藏  举报