go-redis 基于beego正确使用序列化存储数据和反序列化获取数据

Posted 毛毛 - 非科班的理科生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
    }

以上是关于go-redis 基于beego正确使用序列化存储数据和反序列化获取数据的主要内容,如果未能解决你的问题,请参考以下文章

beego20性能

Beego开源项目 收藏

Beego 框架文件存储

Beego 框架文件存储

go-redis

go-redis cluster 使用demo