
概述
GCache 是带有自动载入、过期机制的缓存库。所谓自动载入是指,GCache 可以自定义载入 Handler,当缓存中不存在 key 时调用 Handler 载入 key。
示例
1. 安装
go get github.com/bluele/gcache
2. 基础使用示例
// 将输出:
// Get: ok
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)
}
3. 过期 key 使用
// Get: ok
// 10 seconds later, new attempt:
// panic: ErrKeyNotFound
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)
}
4. 自动载入示例
// Get: ok
package main
import (
"github.com/bluele/gcache"
"fmt"
)
func main() {
gc := gcache.New(20).
LRU().
LoaderFunc(func(key interface{}) (interface{}, error) {
return "ok", nil
}).
Build()
value, err := gc.Get("key")
if err != nil {
panic(err)
}
fmt.Println("Get:", value)
}




近期评论