gookit/cache 基于 Golang 通用的缓存管理使用库
Golang 通用的缓存管理使用库。 通过包装各种常用的驱动,屏蔽掉底层各个驱动的不同使用方法,来提供统一的使用API。
所有缓存驱动程序都实现了
cache.Cache
接口。 因此,您可以添加任何自定义驱动程序。
支持的驱动
goredis
https://github.com/go-redis/redisredis
https://github.com/gomodule/redigomemcached
https://github.com/bradfitz/gomemcachebuntdb
https://github.com/tidwall/buntdbboltdb
https://github.com/etcd-io/bboltbadger
https://github.com/dgraph-io/badgernutsdb
https://github.com/xujiajun/nutsdbgoleveldb
https://github.com/syndtr/goleveldbgcache
https://github.com/bluele/gcachegocache
https://github.com/patrickmn/go-cachebigcache
https://github.com/allegro/bigcache
内部实现
- file 简单的文件缓(当前包的内置实现)
- memory 简单的内存缓存(当前包的内置实现)
安装
go get github.com/gookit/cache
接口方法
所有缓存驱动程序都实现了cache.Cache接口。 因此,您可以添加任何自定义驱动程序。
// Cache interface definition
type Cache interface {
// basic op
Has(key string) bool
Get(key string) interface{}
Set(key string, val interface{}, ttl time.Duration) (err error)
Del(key string) error
// multi op
GetMulti(keys []string) map[string]interface{}
SetMulti(values map[string]interface{}, ttl time.Duration) (err error)
DelMulti(keys []string) error
// clear
Clear() error
}
使用
package main
import (
"fmt"
"github.com/gookit/cache"
"github.com/gookit/cache/goredis"
"github.com/gookit/cache/redis"
)
func main() {
// 注册一个(或多个)缓存驱动
cache.Register(cache.DvrFile, cache.NewFileCache(""))
cache.Register(cache.DvrMemory, cache.NewMemoryCache())
cache.Register(redis.Name, redis.Connect("127.0.0.1:6379", "", 0))
cache.Register(goredis.Name, goredis.Connect("127.0.0.1:6379", "", 0))
// 设置默认驱动名称
cache.DefaultUse(cache.DvrRedis)
// 快速使用(默认驱动)
//
// set
cache.Set("name", "cache value", cache.TwoMinutes)
// get
val := cache.Get("name")
// del
cache.Del("name")
// Out: "cache value"
fmt.Print(val)
// 使用已注册的其他驱动
client := cache.Driver(cache.DvrFile)
client.Set("key", "val", 0)
val = client.Get("key")
// Out: "val"
fmt.Print(val)
}
设置选项
gords := goredis.Connect("127.0.0.1:6379", "", 0)
gords.WithOptions(cache.WithPrefix("cache_"), cache.WithEncode(true))
cache.Register(goredis.Name, gords)
// set
// real key is: "cache_name"
cache.Set("name", "cache value", cache.TwoMinutes)
// get: "cache value"
val := cache.Get("name")
github 地址:https://github.com/gookit/cache
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论