• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go Revel - Cache(缓存)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
revel在服务器端提供了`cache`库用以低延迟的存储临时数据。它缓存那些需要经常访问数据库但是变化不频繁的数据,也可以实现用户会话的存储。 ##有效期 一下三种方法为缓存元素设置过期时间: 1、 一个`time.Duration`值 2、`cache.DEFAULT`值, 应用程序范围的过期时间(默认为1小时) 3、`cache.FOREVER`值, 永不过期 注意,调用者不能过度以来缓存中的数据,因为这些数据不具备持久保持的能力,并且重启缓存时,这些数据都将被清空。 ##序列化 缓存器的`getters`与`setters`会自动转换数据为调用者期望的类型: 1、如果数据是`[]byte`类类型,则不会再进行序列化 2、如果数据是任意整数类型,则以ASCII存储 3、否则,都以`encoding/gob`编码存储 ##实现方式 缓存可以配置为下列实现之一: 1、一个`memcached`主机列表 2、一个基于内存的实现 ##配置 在`app.conf`中以下列方式配置: 1、`cache.expires` - 能被`time.ParseDuration`处理的过期时间(默认为1小时) 2、`cache.memcached` - 布尔值,是否启用`memcached`(默认不启用) 3、`cache.hosts` - 以`,`逗号分割的主机列表,只有当`memcached`启用时才有效。 ##使用示例 下面示例包含了常用的操作,要注意的是,如果不需要取得返回结果来对请求做进一步处理的话,那么最好在一个`goroutine`中去处理缓存。 import ( "github.com/robfig/revel" "github.com/robfig/revel/cache" ) func (c App) ShowProduct(id string) revel.Result { var product Product if err := cache.Get("product_"+id, &product); err != nil { product = loadProduct(id) go cache.Set("product_"+id, product, 30*time.Minute) } return c.Render(product) } func (c App) AddProduct(name string, price int) revel.Result { product := NewProduct(name, price) product.Save() return c.Redirect("/products/%d", product.id) } func (c App) EditProduct(id, name string, price int) revel.Result { product := loadProduct(id) product.name = name product.price = price go cache.Set("product_"+id, product, 30*time.Minute) return c.Redirect("/products/%d", id) } func (c App) DeleteProduct(id string) revel.Result { product := loadProduct(id) product.Delete() go cache.Delete("product_"+id) return c.Redirect("/products") } ##存储会话 `Cache`缓存器具有全局的key空间 - 使用它存储会话,调用着应当使用会话的UUID来作为key。 cache.Set(c.Session.Id(), products) // 在后续的请求中 err := cache.Get(c.Session.Id(), &products)

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
26_Go基础(闭包_4)发布时间:2022-07-10
下一篇:
config.go源码阅读发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap