Go—go-cache包学习详解编程语言

github.com/patrickmn/go-cache
go-cache是一款类似于memached 的key/value 缓存软件。它比较适用于单机执行的应用程序。
go-cache实质上就是拥有过期时间并且线程安全的map,可以被多个goroutine安全访问。

举例说明用法
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/07/08 20:21:13 found: Spring Festival 
2019/07/08 20:22:13 sleep 60s... 
2019/07/08 20:22:13 not found
  • 首先,创建一个新的cache,其中key的过期时间是30s,并且每10s清除缓存中的过期key。

定期清除缓存中的过期key,是通过一个常驻goroutine实现的。

  • 接着,设置一个key/value,及其过期时间。过期时间使用默认过期时间,即30s。
  • 获取这个key,可以看到,此时这个key在cache中是存在的。
  • 睡眠60s,使刚才设置的key过期。
  • 再次获取这个key,此时key已经过期,被清除了,不在cache中。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/18141.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论