• 技术文章 >后端开发 >Golang

    golang-cache是全局吗

    (*-*)浩(*-*)浩2019-12-13 11:37:51原创1087

    go-cache 是一个基于内存的、高速的,存储k-v格式的缓存工具。它适用于运行在单台机器上的应用程序,可以存储任何数据类型的值,并可以被多个goroutine安全地使用。 (推荐学习:go

    虽然go-cache 不打算用作持久数据存储,但是可以将整个缓存数据保存到文件(或任何io.Reader/Writer)中,并且能快速从中指定数据源加载,快速恢复状态。

    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

    以上就是golang-cache是全局吗的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:golang
    上一篇:golang 1.9什么时候发布 下一篇:golang chan是否关闭
    线上培训班

    相关文章推荐

    • Golang Cgo是什么• golang channel是什么• golang channel有什么好处• golang context用来干吗

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网