beego 的 cache 模块是用来做数据缓存的,目前支持 file、memcache、memory 和 redis 四种引擎
配置信息如下所示,配置的信息表示 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")
}
配置信息如下所示,配置 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")
}
配置信息如下所示,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)
}
}
安装引入包:
go get -u github.com/astaxie/beego/cache/redis
redis 采用了库redigo:
{"key":"collectionName","conn":":6039","dbNum":"0","password":"thePassWord"}
例子:
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"))
}
参考文章: