# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# README
Cache
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.Cache
interface. So, You can add any custom driver.
Packaged Drivers:
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
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.
GoDoc
Install
The package supports 3 last Go versions and requires a Go version with modules support.
go get github.com/gookit/cache
Cache Interface
All 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
}
Usage
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")
}
With Options
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 packages
- 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
License
MIT