cache2go 介绍
cache2go 是一个 Go 的并发安全缓存库,具有到期和访问计数器的功能。
示例代码:
package main import ( "github.com/muesli/cache2go" "fmt" "time" ) // Keys & values in cache2go can be off arbitrary types, e.g. a struct. type myStruct struct { text string moreData []byte } func main() { // Accessing a new cache table for the first time will create it. cache := cache2go.Cache("myCache") // We will put a new item in the cache. It will expire after // not being accessed via Value(key) for more than 5 seconds. val := myStruct{"This is a test!", []byte{}} cache.Add("someKey", 5*time.Second, &val) // Let's retrieve the item from the cache. res, err := cache.Value("someKey") if err == nil { fmt.Println("Found value in cache:", res.Data().(*myStruct).text) } else { fmt.Println("Error retrieving value from cache:", err) } // Wait for the item to expire in cache. time.Sleep(6 * time.Second) res, err = cache.Value("someKey") if err != nil { fmt.Println("Item is not cached (anymore).") } // Add another item that never expires. cache.Add("someKey", 0, &val) // cache2go supports a few handy callbacks and loading mechanisms. cache.SetAboutToDeleteItemCallback(func(e *cache2go.CacheItem) { fmt.Println("Deleting:", e.Key(), e.Data().(*myStruct).text, e.CreatedOn()) }) // Remove the item from the cache. cache.Delete("someKey") // And wipe the entire cache table. cache.Flush() } go run mycachedapp.go
cache2go 官网
https://github.com/muesli/cache2go
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。