gcache
Go
Go, cache, gcache
字数统计: 288(字)
阅读时长: 1(分)
概述
GCache
是带有自动载入、过期机制的缓存库。所谓自动载入是指,GCache
可以自定义载入 Handler
,当缓存中不存在 key
时调用 Handler
载入 key
。
示例
1. 安装
1
| go get github.com/bluele/gcache
|
2. 基础使用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
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
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
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)
time.Sleep(time.Second*10)
value, err = gc.Get("key") if err != nil { panic(err) } fmt.Println("Get:", value) }
|
4. 自动载入示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 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) }
|
参考