首页 > 数据库 >golang使用缓存库go-cache的测试用例-短期内存缓存数据类似memcache/redis-【唯一客服】

golang使用缓存库go-cache的测试用例-短期内存缓存数据类似memcache/redis-【唯一客服】

时间:2023-03-17 22:34:44浏览次数:42  
标签:bar cache redis memcache time go found foo

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

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

 

标签:bar,cache,redis,memcache,time,go,found,foo
From: https://www.cnblogs.com/taoshihan/p/17228452.html

相关文章

  • Redis:我大哥是mysql
    Redis:我大哥是mysql本文说明:简单梳理redis的设计redis某种角度上只是mysql的手下的工具人1.缓存管理redis的出现:作为缓冲区、以免mysql被大量请求冲烂宕机如果同......
  • Springboot中redis的配置和使用
    1、引入依赖Springboot中可以引入整合的redis的starter依赖如:<!--springboot整合redis,包含了spring-data-redis--><dependency><groupId>org.s......
  • 路飞:上线架构图、阿里云购买云服务器ECS、云服务器安装mysql、云服务器安装redis(源码
    目录一、上线架构图二、阿里云购买云服务器ECS2.1试用版云服务器ECS获取流程2.2ssh客户端连接远程服务器2.3finalshell连接远程数据库2.4远程服务器的准备工作三、云服务器......
  • redis的简单动态字符串
    概念redis在c的基础上编写,但是redis的许多数据结构是不同于c的数据结构。redis的字符串表示是利用自己构建的SDS(简单动态字符串)作为默认字符串表示的。而c默认的字符......
  • Redis 快速实现分布式锁
    完备的分布式锁,需要支持哪些特性?   互斥性,互斥是锁的基本特征,同一时刻只能有一个线程持有锁,执行临界操作;超时释放,超时释放是锁的另一个必备特性,可以对比MySQLInn......
  • 我又和redis超时杠上了
    我又和redis超时杠上了 我又和redis超时杠上了服务监控系列文章服务监控系列视频背景经过上次redis超时排查,并联系云服务商解决之后,redis超时的现象好了一阵子,但......
  • 直播网站程序源码,采用Redis实现购物车功能
    直播网站程序源码,采用Redis实现购物车功能1.添加pom依赖  <!--redis--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-st......
  • Redis缓存经典问题:缓存雪崩、击穿、穿透、双写一致性、并发竞争、热点key、BigKey
     一. 缓存雪崩1. 含义同一时刻,大量的缓存同时过期失效。2. 产生原因和后果(1). 原因:由于开发人员经验不足或失误,大量热点缓存设置了统一的过期时间。(2).......
  • 你知道Redis的字符串是怎么实现的吗?
    Redis字符串的实现Redis虽然是用C语言写的,但却没有直接用C语言的字符串,而是自己实现了一套字符串。Redis构建了一个叫做简单动态字符串(SimpleDynamicString),简称SDS。R......
  • Redis监控
    通过grafana可视化看板监控redis。1.安装redis数据源首先需要添加redis数据源,地址:https://grafana.com/grafana/plugins/redis-datasource/?tab=installation1.1......