beego 的缓存如何转结构体呢?

发布于 2022-09-11 21:44:27 字数 694 浏览 27 评论 0

写入缓存

func SetCategory(category models.Category) {
    _ = BM.Put("category", category, 1000*time.Second)
}

但是获取的时候

func GetCategory() []models.Category {
    category := BM.Get("category")
    fmt.Println(category.([]models.Category))
    return nil
}

这里无法转为结构体
有什么办法转呢?

func (c *CategoryController) Index() {

    var category []models.Category
    category = dao.GetCategory()

    if category == nil {
        m := new(models.Category)

        category, _ = m.GetList()
        dao.SetCategory(category)
    }

    c.Data["category"] = category

    c.TplName = "admin/category/index.html"
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

恋你朝朝暮暮 2022-09-18 21:44:27

存的时候用model.Category,转的时候用[]model.Category,类型都不相同,肯定不行。
建议把错误贴出来

仅一夜美梦 2022-09-18 21:44:27

声明下,我没用过 beego,按你的问题,看了下它的代码,并写了小例子测试了下。

可以先看下 Cache 接口定义:

type Cache interface {
    Get(key string) interface{}
    GetMulti(keys []string) []interface{}
    Put(key string, val interface{}, timeout time.Duration) error
    Delete(key string) error
    Incr(key string) error
    Decr(key string) error
    IsExist(key string) bool
    ClearAll() error
    StartAndGC(config string) error
}

Put 并不是理解的 list 追加,与 Get 的区别只是多了一个过期时间。所以,你 Put 的是啥,那 Get 就是啥。如果要获取的切片,那 Put 时也必须是切片。

package main

import (
    "fmt"
    "github.com/astaxie/beego/cache"
    "time"
)

type User struct {
    Name string
}

func main() {
    bm, err := cache.NewCache("memory", `{"interval":60}`)
    if err != nil {
        panic(err)
    }

    err = bm.Put("users", []User{{Name: "poloxue"}}, 10*time.Second)
    if err != nil {
        panic(err)
    }

    view := bm.Get("users")
    fmt.Println(view.([]User))
}
兔姬 2022-09-18 21:44:27

目前用的办法为:

func GetCategory() []models.Category {
    category := BM.Get("category")
    if category == nil{
        return nil
    }
    var data []models.Category
    _ = json.Unmarshal(category.([]uint8), &data)

    return data
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文