gcache 是 gorm 的中间件 插入后 gorm 即刻拥有缓存
项目地址:https://github.com/8treenet/gcache
Overview
- 即插即用
- 旁路缓存
- 数据源使用 Redis
- 防击穿
- 防穿透
安装
$ go get github.com/8treenet/gcache
快速使用
import (
"github.com/8treenet/gcache"
"github.com/jinzhu/gorm"
"github.com/8treenet/gcache/option""
)
func init() {
//创建 gorm.DB
db, _ = gorm.Open("mysql", "")
opt := option.DefaultOption{}
opt.Expires = 300 //缓存时间, 默认120秒。范围30-43200
opt.Level = option.LevelSearch //缓存级别,默认LevelSearch。LevelDisable:关闭缓存,LevelModel:模型缓存, LevelSearch:查询缓存
opt.AsyncWrite = false //异步缓存更新, 默认false。 insert update delete 成功后是否异步更新缓存。 ps: affected如果未0,不触发更新。
opt.PenetrationSafe = false //开启防穿透, 默认false。 ps:防击穿强制全局开启。
//缓存中间件附加到gorm.DB
gcache.AttachDB(db, &opt, &option.RedisOption{Addr:"localhost:6379"})
}
约定
- 模型必须指明主键
gorm:"primary_key"
- 不支持 Group
- 不支持 Having
- 查询条件和查询参数分离
Example
# 查看 example_test.go 了解更多。 more src/github.com/8treenet/gcache/example/example_test.go
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论