前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gobox中的simplecache和levelcache

gobox中的simplecache和levelcache

作者头像
李海彬
发布2018-07-26 10:53:10
4590
发布2018-07-26 10:53:10
举报
文章被收录于专栏:Golang语言社区Golang语言社区

原文作者:Agang

今天来说下gobox中的simplecache和levelcache

simplecache

simplecache提供了一个简单的内存kv

用法示例

代码语言:javascript
复制
 1package main
 2import (
 3    "github.com/goinbox/crypto"
 4    "github.com/goinbox/simplecache"
 5    "fmt"
 6    "time"
 7    "strconv"
 8)
 9func main() {
10    sc := simplecache.NewSimpleCache()
11    for i := 0; i < 10000; i++ {
12        key := crypto.Md5String([]byte(strconv.Itoa(i)))
13        sc.Set(key, i, 3*time.Second)
14        v, ok := sc.Get(key)
15        if !ok || v != i {
16            fmt.Println(v, ok)
17        }
18    }
19    time.Sleep(4 * time.Second)
20    allKeysExpires := true
21    for i := 0; i < 10000; i++ {
22        key := crypto.Md5String([]byte(strconv.Itoa(i)))
23        v, ok := sc.Get(key)
24        if ok || v == i {
25            fmt.Println(v, ok)
26            allKeysExpires = false
27        }
28    }
29    if allKeysExpires {
30        fmt.Println("all keys have expired")
31    }
32}

输出效果示例

代码语言:javascript
复制
1all keys have expired

特别说明

1、在使用时,如果set的值是引用类型,那么改变引用的对象的值时,cache中的内容也会改变,这一点要特别注意。

2、因为是内存cache,所以进程退出则cache内容全部丢失。

levelcache

levelcache以leveldb为底层存储引擎,提供了一个单机落盘的kv。

用法示例

代码语言:javascript
复制
 1package main
 2import (
 3    "github.com/goinbox/levelcache"
 4    "fmt"
 5    "time"
 6)
 7func main() {
 8    cache, _ := levelcache.NewCache("/tmp/levelcache_test", 5*time.Second)
 9    key := []byte("k1")
10    value := []byte("v1")
11    cache.Set(key, value, 3)
12    value, _ = cache.Get(key)
13    sv := string(value)
14    fmt.Println(sv)
15    if sv != "v1" {
16        fmt.Println("set get error")
17    }
18    time.Sleep(4 * time.Second)
19    v, err := cache.Get(key)
20    sv = string(v)
21    fmt.Println(sv, err)
22}

输出效果示例

代码语言:javascript
复制
1v1
2 <nil>

特别说明

cache会存储在单机磁盘上,不是分布式的。

欢迎大家使用,使用中有遇到问题随时反馈,我们会尽快响应,谢谢!

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • simplecache
    • 用法示例
      • 输出效果示例
        • 特别说明
        • levelcache
          • 用法示例
            • 输出效果示例
              • 特别说明
              相关产品与服务
              对象存储
              对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档