beego的模块篇 - cache缓存

发布时间:2024年01月19日

beego 的 cache 模块是用来做数据缓存的,目前支持 file、memcache、memory 和 redis 四种引擎

1 使用memory作为cache

配置信息如下所示,配置的信息表示 GC 的时间,表示每个 60s 会进行一次过期清理:

{"interval":60}

例子 :?

import "github.com/astaxie/beego/cache"

func (c *MemoryCacheController) Get() {
    // 初始化缓存对象,参数:memory类型cache引擎和memory的过期时间(单位秒),返回值:cache类型的接口(该接口有一系列方法)和错误信息
    bm, err := cache.NewCache("memory", `{"interval":"360"}`) 

    bm.Put("astaxie", 1, 10*time.Second)
    bm.Get("astaxie")
    bm.IsExist("astaxie")
    bm.Delete("astaxie")
}

2 使用file作为cache

配置信息如下所示,配置 CachePath 表示缓存的文件目录,FileSuffix 表示文件后缀,DirectoryLevel 表示目录层级,EmbedExpiry 表示过期设置

  {"CachePath":"./cache","FileSuffix":".cache","DirectoryLevel":"2","EmbedExpiry":"120"}

?例如:

import "github.com/astaxie/beego/cache"

func (c *FileCacheController) Get() {
    /*
    初始化缓存对象,返回值:cache类型的接口(该接口有一系列方法)和错误信息
    参数:
        CachePath:缓存的文件目录
        FileSuffix:文件后缀
        DirectoryLevel:目录层级
        EmbedExpiry:过期时间,字符串类型
    */
    bm, err := cache.NewCache("file", `{"CachePath":"./cache_file","FileSuffix":"cache","DirectoryLevel":"2","EmbedExpiry":"120"}`)
    bm.Put("astaxie", 1, 10*time.Second)
    bm.Get("astaxie")
    bm.IsExist("astaxie")
    bm.Delete("astaxie")
}

3 使用memcache作为cache

配置信息如下所示,memcache 采用了vitess的库,表示 memcache 的连接地址:

 {"conn":"127.0.0.1:11211"}

安装引入包

go get -u github.com/astaxie/beego/cache/memcache

例子:?

import (
    "github.com/astaxie/beego/cache"
    _ "github.com/astaxie/beego/cache/memcache"
)

func (c *MemcacheCacheController) Get() {
    /*
        初始化缓存对象,返回值:cache类型的接口(该接口有一系列方法)和错误信息
        参数:conn:memcached的连接信息
    */
    ac, err := cache.NewCache("memcache", `{"conn":"127.0.0.1:11211"}`)
    if err != nil {
        fmt.Println("NewCache failed, err:", err)
    }

    ac.Put("name", "优选二维码", 120)
    if ac.IsExist("name") {
        name := ac.Get("name")
        fmt.Println("get name",name)
    }
}

4 使用redis作为cache

安装引入包:

go get -u github.com/astaxie/beego/cache/redis

redis 采用了库redigo:

 {"key":"collectionName","conn":":6039","dbNum":"0","password":"thePassWord"}
  • key: Redis collection 的名称
  • conn: Redis 连接信息
  • dbNum: 连接 Redis 时的 DB 编号. 默认是0.
  • password: 用于连接有密码的 Redis 服务器.

例子:

import (
    "github.com/astaxie/beego/cache"
    _ "github.com/astaxie/beego/cache/redis"
)

func (c *RedisCacheController) Get() {
    /*
        初始化缓存对象,返回值:cache类型的接口(该接口有一系列方法)和错误信息
        参数:
            key:redis链接的名称(如key设置为:szy,然后往redis里写入key的名字为name,在redis里查询得到:"szy:name",如果不设置key默认key字段的值为:beeCacheRedis)
            conn:redis连接信息
            dbNum:哪个库
            password:redis密码
    */
    ac, err := cache.NewCache("redis", `{"key":"szy","conn":"127.0.0.1:6379","dbNum":"0"}`)
    if err != nil {
        fmt.Println("NewCache failed, err:", err)
    }

    // 往redis里写数据
    err1 := ac.Put("name","devops测试", time.Second * 60)
    if err1 != nil {
        fmt.Println("put data failed, err:", err1)
    }

    // 从redis里读数据
    if ac.IsExist("name") {
        fmt.Println(ac.Get("name"))
    }
    fmt.Println(ac.Get("name"))
}

参考文章:

https://www.fansimao.com/834241.html

https://www.fansimao.com/834256.html

文章来源:https://blog.csdn.net/liu289747235/article/details/135685247
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。