10.go开源cache2go项目笔记——mycachedapp调用
packagemain
import(
"fmt"
"time"
"cache2go-master"
)
typemyStructstruct{
text string
moreData[]byte
}
funcmain(){
cache:=cache2go.Cache("myCache")
val:=myStruct{"Thisisatest!",[]byte{}}
cache.Add("someKey",5*time.Second,&val)
res,err:=cache.Value("someKey")
iferr==nil{
fmt.Println("Foundvalueincache:",res.Data().(*myStruct).text)
}else{
fmt.Println("Errorretrievingvaluefromcache:",err)
}
time.Sleep(6*time.Second)
res,err=cache.Value("someKey")
iferr!=nil{
fmt.Println("Itemisnotcached(anymore).")
}
cache.Add("someKey",0,&val)
cache.SetAboutToDeleteItemCallback(func(e*cache2go.CacheItem){
fmt.Println("Deleting:",e.Key(),e.Data().(*myStruct).text,e.CreatedOn())
})
cache.Delete("someKey")
cache.Flush()
}
Found value in cache: This is a test!
Item is not cached (anymore).
Deleting: someKeyThis is a test! 2016-07-17 22:50:06.746398 +0800 CST
先创建一个CACHETABLE。
cache.Add("someKey",5*time.Second,&val)增加一个键,键为someKey.键值比较特殊是一个结构体。不访问的话5秒删除该键。
然后访问一次后等待6秒。
继续访问提示不存在。
然后增加该CACHEITEM但是不会过期。
然后调用cache.SetAboutToDeleteItemCallback设置删除ITEM的回调函数aboutToDeleteItem
接着删除该CACHETIME 来触发aboutToDeleteItem,真正删除ITEM是使用delete函数。
最后调用Flush函数来删除CACHE TABLE。