当前位置: 首页 > news >正文

合肥中科大网站开发推广平台开户代理

合肥中科大网站开发,推广平台开户代理,哪个网站可以做付费推广,企业建网站群golang一个轻量级基于内存的kv存储或缓存 go-cache是一个轻量级的基于内存的key:value 储存组件,类似于memcached,适用于在单机上运行的应用程序。 它的主要优点是,本质上是一个具有过期时间的线程安全map[string]interface{}。interface的结…

golang一个轻量级基于内存的kv存储或缓存

go-cache是一个轻量级的基于内存的key:value 储存组件,类似于memcached,适用于在单机上运行的应用程序。
它的主要优点是,本质上是一个具有过期时间的线程安全map[string]interface{}。interface的结构决定了它不需要序列化。基于内存的特性决定了其不需要网络传输其内容,因此就不存在网络耗时。

在使用时,一般都是将go-cache作为数据缓存来使用,而不是持久性的数据存储。对于停机后快速恢复的场景,go-cache支持将缓存数据保存到文件,恢复时从文件中load数据加载到内存。

go-cache广泛使用在go语言编程中,适合在单机上存储键值对形式的内存缓存。

github上地址为: https://github.com/patrickmn/go-cache

它在并发的时候,线程安全(读写锁) + map[string]interface{} + 过期时间 来作为go的本地化存储。

这也是他的三大特性:

  • 线程安全,通过读写锁支持多个协程并发访问
  • 不需要序列化,键值对形式,任意值类型map[string]interface{}
  • 自定义每个key的过期时间

cache基本使用

安装go-cache

go get github.com/patrickmn/go-cache

创建一个go文件,例如:cache_demo.go 内容如下

package mainimport ("fmt""github.com/patrickmn/go-cache""time"
)func main() {// 初始化cache 默认过期时间设置为5*time.Minute,扫描过期key的间隔时间10*time.Minutec := cache.New(5*time.Minute, 10*time.Minute)// 设置为默认过期时间,即New时设置的时间5*time.Minutec.Set("foo", "bar", cache.DefaultExpiration)// 设置为不过期c.Set("baz", 42, cache.NoExpiration)// 设置指定过期时间为100秒c.Set("cache", 100, time.Second*3)// Get the string associated with the key "foo" from the cachefoo, found := c.Get("foo")if found {fmt.Println(foo)}// 验证过期<-time.After(5 * time.Second)cacheRes, found := c.Get("cache")if found {fmt.Println(cacheRes)} else {fmt.Println("cache not found")}// 因为value是interface{}类型,所以如果需要存入的类型,需要断言var fooValue stringif x, ok := c.Get("foo"); ok {fooValue = x.(string)}fmt.Println("fooValue:", fooValue)//对于结构体,存储一个指针,可以有一个更好的性能c.Set("MyStruct", &MyStruct{Name: "gary",Age:  18,}, cache.DefaultExpiration)if x, ok := c.Get("MyStruct"); ok {res := x.(*MyStruct)fmt.Println("MyStruct:", res)}// 删除keyc.Delete("foo")if fooRes, ok := c.Get("foo"); ok {fmt.Println("after delete", fooRes)} else {fmt.Println("after delete not found foo")}
}type MyStruct struct {Name stringAge  int
}

cache封装

项目中定义一个cache包,所有缓存方法封装到cache包里,外部直接调用

package cacheimport ("github.com/patrickmn/go-cache""time"
)var c *cache.Cachefunc init() {//创建一个默认过期时间为5分钟的缓存,并且//每10分钟清除一次过期项目c = cache.New(5*time.Minute, 10*time.Minute)
}// 缓存保存 默认的过期时间
func SetDefaultExpire(key string, value interface{}) {c.Set(key, value, cache.DefaultExpiration)
}// 缓存放入 不过期
func SetNoExpire(key string, value interface{}) {c.Set(key, value, cache.NoExpiration)
}// 缓存放入 设置过期时间
func SetExpire(key string, value interface{}, t time.Duration) {c.Set(key, value, t)
}// 缓存获取
func Get(key string) (interface{}, bool) {return c.Get(key)
}// 删除缓存
func Delete(key string) {c.Delete(key)
}

参考链接:
https://github.com/patrickmn/go-cache
https://www.jianshu.com/p/1ba4d429d3d3
https://www.cnblogs.com/Moon-Light-Dream/p/12494683.html

http://www.15wanjia.com/news/1773.html

相关文章:

  • 代办网站备案百度竞价排名商业模式
  • 东莞企业免费模版网站建设关键词数据分析
  • 网络彩票代理怎么做社区网站seo是什么意思呢
  • 兰州网站建设程序seo综合查询怎么用
  • 口碑好的网站开发百度竞价开户需要多少钱
  • 可以做项目的网站百度收录快速提交
  • 双语网站建设公司网络营销的盈利模式
  • 食品网络营销策略方案青岛seo排名公司
  • 做网站 分工长春网站开发公司
  • 网站建设用什么代码app拉新推广怎么做
  • jsp做网站开发优化关键词的步骤
  • 大连做网站建设seo网站关键词排名优化
  • 做演讲和做演讲视频网站苏州百度快照优化排名
  • 电子商务网站建设技术规范线上销售如何找到精准客户
  • 帝国手机网站模板谷歌代运营
  • 手机怎么建网站网站统计分析工具的主要功能
  • 茂名网站开发服务商全网关键词优化公司哪家好
  • 云龙徐州网站开发全网投放广告的渠道有哪些
  • 中国建设银行网站怎么登录不上湖南优化推广
  • 超市如何建立网站百度搜索引擎排名
  • 可以为自己的小说建设网站seo视频教学网站
  • 免费建立微信网站云建站
  • 网站引导页在线做互联网广告营销
  • 网站空间商推荐竞价推广怎么做
  • 专业的新乡网站建设seo综合查询平台官网
  • 免费网站制作平台深圳网络营销技巧
  • 如何建立网站建设杭州做网站的公司排行
  • 网站 description随州今日头条新闻
  • 网站空间一定要买吗资阳地seo
  • b2b网站分类2023年7月疫情爆发