Files
cache/README_cn.md
T

5.1 KiB

Cache

GitHub go.mod Go version GoDoc Go Report Card Actions Status

EN README

Golang 通用的缓存管理使用库。

通过包装各种常用的驱动,屏蔽掉底层各个驱动的不同使用方法,来提供统一的使用API。

所有缓存驱动程序都实现了 cache.Cache 接口。 因此,您可以添加任何自定义驱动程序。

已经封装的驱动:

内置实现:

  • file 简单的文件缓存(当前包的内置实现)
  • memory 简单的内存缓存(当前包的内置实现)

注意:内置实现比较简单,不推荐生产环境使用;生产环境推荐使用上面列出的三方驱动。

GoDoc

安装

go get github.com/gookit/cache

接口方法

所有缓存驱动程序都实现了 cache.Cache 接口。 因此,您可以添加任何自定义驱动程序。

// Cache interface definition
type Cache interface {
	// basic op
	Has(key string) bool
	Get(key string) any
	Set(key string, val any, ttl time.Duration) (err error)
	Del(key string) error
	// multi op
	GetMulti(keys []string) map[string]any
	SetMulti(values map[string]any, ttl time.Duration) (err error)
	DelMulti(keys []string) error
	// clear & 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() {
	// 注册一个(或多个)缓存驱动
	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))

	// 设置默认驱动名称
	cache.DefaultUse(goredis.Name)

	// 快速使用(默认驱动)
	//
	// 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(gcache.Name)
	client.Set("key", "val", cache.Seconds3)
	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")

Gookit packages

  • 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/ini INI parse, simple go config management, use INI files
  • 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