gookit/cache 基于 Golang 通用的缓存管理使用库

发布于 2021-07-06 21:22:07 字数 3611 浏览 1700 评论 0

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

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

支持的驱动

内部实现

  • 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文