10.go开源cache2go项目笔记——mycachedapp调用

来源:互联网 发布:阿里云 腾讯云 香港 编辑:程序博客网 时间:2024/05/29 10:21

10.go开源cache2go项目笔记——mycachedapp调用

1      代码如下

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()
}

2      执行

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

3      代码说明

先创建一个CACHETABLE。

cache.Add("someKey",5*time.Second,&val)增加一个键,键为someKey.键值比较特殊是一个结构体。不访问的话5秒删除该键。

然后访问一次后等待6秒。

继续访问提示不存在。

然后增加该CACHEITEM但是不会过期。

然后调用cache.SetAboutToDeleteItemCallback设置删除ITEM的回调函数aboutToDeleteItem

接着删除该CACHETIME 来触发aboutToDeleteItem,真正删除ITEM是使用delete函数。

最后调用Flush函数来删除CACHE TABLE。