[go-cache]-内存keyvalue缓存 | Go主题月

827 阅读1分钟

作者:三十三重天

博客:www.zhouhuibo.club

通过学习和分享的过程,将自己工作中的问题和技术总结输出,希望菜鸟和老鸟都能通过自己的文章收获新的知识,并付诸实施。

引言

go-cache类似于memcached的值存储/缓存,适用于在一台计算机上运行的应用程序。它的主要优点是,由于本质上是map[string]interface{}具有到期时间的线程安全的,因此不需要在网络上序列化或传输其内容。

可以存储任何对象(在给定的持续时间内或永久存储),并且可以由多个goroutine安全地使用高速缓存。

特点

线程安全

适用于单机执行的应用程序

用法

go get github.com/patrickmn/go-cachego get 
import (
	"github.com/patrickmn/go-cache"
)

使用

package main

import (
	"fmt"
	"time"

	"github.com/patrickmn/go-cache"
)

func main() {
	//创建一个cache,key过期时间5M,并且每10M清除缓存中的过期key
	c := cache.New(5*time.Minute, 10*time.Minute)

	//插入
	c.Set("foo", "bar", cache.DefaultExpiration) //按照默认过期时间设置缓存 保存5分钟
	//c.Set("foo", "bar", cache.NoExpiration)//永久存储,无过期时间

	//更新缓存内容和过期时间
	c.Set("baz", 42, cache.NoExpiration)

	//删除缓存
	// c.Delete("baz")

	//查询缓存
	foo, found := c.Get("foo")
	if found {
		fmt.Println(foo)
	}
}

资源列表

github.com/patrickmn/g…

www.cnblogs.com/Paul-waterm…

END

欢迎关注公众号 程序员工具集 👍👍 致力于分享优秀的开源项目、学习资源 、常用工具

回复关键词“关注礼包”,送你一份最全的程序员技能图谱。

回复关键词"wx"添加个人微信,勾搭作者,欢迎来聊^-^。