Generic cache use and cache manager for golang.
Provide a unified usage API by packaging various commonly used drivers.
All cache driver implemented the
cache.Cacheinterface. So, You can add any custom driver.
Packaged Drivers:
- goredishttps://github.com/go-redis/redis
- redishttps://github.com/gomodule/redigo
- memcachedhttps://github.com/bradfitz/gomemcache
- buntdbhttps://github.com/tidwall/buntdb
- boltdbhttps://github.com/etcd-io/bbolt
- badgerhttps://github.com/dgraph-io/badger
- nutsdbhttps://github.com/xujiajun/nutsdb
- goleveldbhttps://github.com/syndtr/goleveldb
- gcachehttps://github.com/bluele/gcache
- gocachehttps://github.com/patrickmn/go-cache
- bigcachehttps://github.com/allegro/bigcache
Internal:
- file internal driver driver_file.go
- memory internal driver driver_memory.go
Notice: The built-in implementation is relatively simple and is not recommended for production environments; the production environment recommends using the third-party drivers listed above.
The package supports 3 last Go versions and requires a Go version with modules support.
go get github.com/gookit/cacheAll cache driver implemented the cache.Cache interface. So, You can add any custom driver.
type Cache interface {
	// basic operation
	Has(key string) bool
	Get(key string) any
	Set(key string, val any, ttl time.Duration) (err error)
	Del(key string) error
	// multi operation
	GetMulti(keys []string) map[string]any
	SetMulti(values map[string]any, ttl time.Duration) (err error)
	DelMulti(keys []string) error
	// clear and close
	Clear() error
	Close() error
}package main
import (
	"fmt"
	"github.com/gookit/cache"
	"github.com/gookit/cache/gcache"
	"github.com/gookit/cache/gocache"
	"github.com/gookit/cache/goredis"
	"github.com/gookit/cache/redis"
)
func main() {
	// register one(or some) cache driver
	cache.Register(cache.DvrFile, cache.NewFileCache(""))
	// cache.Register(cache.DvrMemory, cache.NewMemoryCache())
	cache.Register(gcache.Name, gcache.New(1000))
	cache.Register(gocache.Name, gocache.NewGoCache(cache.OneDay, cache.FiveMinutes))
	cache.Register(redis.Name, redis.Connect("127.0.0.1:6379", "", 0))
	cache.Register(goredis.Name, goredis.Connect("127.0.0.1:6379", "", 0))
	// setting default driver name
	cache.DefaultUse(gocache.Name)
	// quick use.(it is default driver)
	//
	// set
	cache.Set("name", "cache value", cache.TwoMinutes)
	// get
	val := cache.Get("name")
	// del
	cache.Del("name")
	// get: "cache value"
	fmt.Print(val)
	// More ...
	// fc := cache.Driver(gcache.Name)
	// fc.Set("key", "value", 10)
	// fc.Get("key")
}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")- gookit/ini Go config management, use INI files
- gookit/rux Simple and fast request router for golang HTTP
- gookit/gcli build CLI application, tool library, running CLI commands
- gookit/slog Lightweight, extensible, configurable logging library written in Go
- gookit/event Lightweight event manager and dispatcher implements by Go
- gookit/cache Provide a unified usage API by packaging various commonly used drivers.
- gookit/config Go config management. support JSON, YAML, TOML, INI, HCL, ENV and Flags
- gookit/color A command-line color library with true color support, universal API methods and Windows support
- gookit/filter Provide filtering, sanitizing, and conversion of golang data
- gookit/validate Use for data validation and filtering. support Map, Struct, Form data
- gookit/goutil Some utils for the Go: string, array/slice, map, format, cli, env, filesystem, test and more
- More, please see https://github.com/gookit
MIT