zoukankan      html  css  js  c++  java
  • 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中。
  • 相关阅读:
    ThinkPHP安全规范指引
    正则表达式:不能包含某些特殊字符串
    头晕是因为虚 ( ̄^ ̄゜)
    vs code中文扩展包
    table-cell width:1% 深入理解
    C#使用NPOI操作Excel
    C#利用LumenWorks.Framework.IO.Csv读取CSV文件
    发送邮件代码
    .net 集合详解
    EF Code First:数据更新最佳实践
  • 原文地址:https://www.cnblogs.com/Paul-watermelon/p/11153553.html
Copyright © 2011-2022 走看看