gcache是指(Go语言)中的缓存

“gcache是什么”

gcache是一个用于Golang的缓存库,可以将数据暂时存储在缓存中,并且在需要时方便地进行特定缓存的删除操作。

    • 特徴

様々な有効期限付きのキャッシュを作成できる

LFU、LRU、ARC

スレッド(goroutine)セーフ
エントリーを削除、削除、および追加するイベントハンドラーをサポートしている
キャッシュが存在しない場合、キャッシュを自動的に読み込んでくれる

用法

要进行安装,需要执行go get命令。

$ go get -u https://github.com/bluele/gcache

一个最简单的例子就是这样的。

package main

import (
 "github.com/bluele/gcache"
 "fmt"
)

func main() {
 gc := gcache.New(20).
  LRU().
  Build()
 gc.Set("key", "ok")
 value, err := gc.Get("key")
 if err != nil {
  panic(err)
 }
 fmt.Println("Get:", value)
}

执行后,将在控制台上输出如下内容。

Get: ok

使用SetWithExpire()函数,可以轻松地设置时间。

package main

import (
 "github.com/bluele/gcache"
 "fmt"
 "time"
)

func main() {
 gc := gcache.New(20).
  LRU().
  Build()
 // 消去時間の設定
 gc.SetWithExpire("key", "ok", time.Second*10)
 value, _ := gc.Get("key")
 fmt.Println("Get:", value)

 // Wait for value to expire
 time.Sleep(time.Second*10)

 value, err := gc.Get("key")
 if err != nil {
  panic(err)
 }
 fmt.Println("Get:", value)
}

执行之后,将在控制台上输出如下信息。
最初的获取是成功的,但是随着时间的推移,缓存会被清除,无法再次获取。

Get: ok
panic: Key not found.

goroutine 1 [running]:
~~~
exit status 2

可以轻松地更改设置带有有效期限的缓存,具体如下:

func main() {
    // size: 10
    gc := gcache.New(10).
    // ここでLFU、LRU、ARCを設定できる
      LFU().
      Build()
    gc.Set("key", "value")
  }

添加处理程序可以使用AddedFunc()来实现。(删除可以使用EvictedFunc())

func main() {
  gc := gcache.New(2).
    AddedFunc(func(key, value interface{}) {
      fmt.Println("added key:", key)
    }).
    Build()
  for i := 0; i < 3; i++ {
    gc.Set(i, i*i)
  }
}

执行结果

added key: 0
added key: 1
added key: 2

这是一个简单易用的缓存库。

请参考

    https://github.com/bluele/gcache
广告
将在 10 秒后关闭
bannerAds