go-cache是一款类似于memached 的key/value 缓存软件。它比较适用于单机执行的应用程序。
go-cache实质上就是拥有过期时间并且线程安全的map,可以被多个goroutine安全访问。
下面举例说明其用法。
Demo
package main import ( "log" "time" "github.com/patrickmn/go-cache" ) func main(){ c := cache.New(30*time.Second,10*time.Second) c.Set("Title","Spring Festival",cache.DefaultExpiration) value,found := c.Get("Title") if found { log.Println("found:",value) } else { log.Println("not found") } time.Sleep(60*time.Second) log.Println("sleep 60s...") value,found = c.Get("Title") if found { log.Println("found:",value) } else { log.Println("not found") } }
output
2019/02/05 17:49:32 found: Spring Festival
2019/02/05 17:50:32 sleep 60s...
2019/02/05 17:50:32 not found
首先,创建一个新的cache,其中key的过期时间是30s,并且每10s清除缓存中的过期key。
定期清除缓存中的过期key,是通过一个常驻goroutine实现的。- 接着,设置一个key/value,及其过期时间。过期时间使用默认过期时间,即30s。
- 获取这个key,可以看到,此时这个key在cache中是存在的。
- 睡眠60s,使刚才设置的key过期。
再次获取这个key,此时key已经过期,被清除了,不在cache中。
参考
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。