golang cache--go-cache

2019/02/05 18:11
阅读数 83

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中。

参考

go-cache

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部