golang中使用go-cache是非常普遍的,比如,我在对接微信客服接口的时候,获取access_token,默认获取一次有两个小时的有效期

这个时候,我就可以使用go-cache来缓存access_token了

 

下面是对go-cache的测试用例:

package tools

import (

"testing"

"time"

"github.com/patrickmn/go-cache"

)

func TestGoCache(t *testing.T) {

// 创建一个具有默认过期时间为5分钟和清理间隔为10分钟的缓存

c := cache.New(5*time.Minute, 10*time.Minute)

// 使用默认过期时间将键 "foo" 的值设置为 "bar"

c.Set("foo", "bar", cache.DefaultExpiration)

// 获取键 "foo" 的值

value, found := c.Get("foo")

if !found {

t.Error("缓存中未找到键 'foo'")

}

if value != "bar" {

t.Errorf("预期为 'bar',得到 '%s'", value)

}

// 删除键 "foo"

c.Delete("foo")

// 检查键 "foo" 是否已删除

_, found = c.Get("foo")

if found {

t.Error("键 'foo' 应该被删除")

}

}

// TestGoCacheWithExpiration 测试设置过期时间为3600秒的数据

func TestGoCacheWithExpiration(t *testing.T) {

// 创建一个具有默认过期时间为5分钟和清理间隔为10分钟的缓存

c := cache.New(5*time.Minute, 10*time.Minute)

// 将键 "foo" 的值设置为 "bar",过期时间为10秒

c.Set("foo", "bar", time.Duration(10)*time.Second)

// 获取键 "foo" 的值

value, found := c.Get("foo")

if !found {

t.Error("缓存中未找到键 'foo'")

}

if value != "bar" {

t.Errorf("预期为 'bar',得到 '%s'", value)

}

// 等待10秒后,键 "foo" 应该过期

time.Sleep(10 * time.Second)

// 检查键 "foo" 是否已过期

_, found = c.Get("foo")

if found {

t.Error("键 'foo' 应该已过期")

}

}

go test -v go_cache_test.go

过期以后就会被删除的,所以测试全部通过

 

查看原文