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