linthan / gcache

gorm cache plugin

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

gcache

License Go Report Card Build Status GoDoc

gcache 是 gorm 的中间件,插入后 gorm 即刻拥有缓存。

Overview

  • 即插即用
  • 旁路缓存
  • 数据源使用 Redis
  • 防击穿
  • 防穿透

安装

$ go get -u github.com/linthan/gcache

快速使用

import (
    "github.com/linthan/gcache"
    "github.com/jinzhu/gorm"
    "github.com/linthan/gcache/option""
)

func init() {
    //创建 gorm.DB
    db, _ = gorm.Open("mysql", "")

    opt := option.DefaultOption{}
    opt.Expires = 300                //缓存时间,默认120秒。范围 30-3600
    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"})
}

约定

  • 不支持 Group
  • 不支持 Having
  • 查询条件和查询参数分离

Example

    #查看 example_test.go 了解更多。
    more src/github.com/linthan/gcache/example/example_test.go

About

gorm cache plugin

License:Apache License 2.0


Languages

Language:Go 100.0%