# 前言

平时用 go 写一些小工具的时候,如果数据的敏感性没有那么强,那么一些热数据就可以考虑放在 cache 当中,cache 也没必要用外置服务,那就直接使用本机内存进行存储即可。

go-cache 就是一个用于本地缓存的 Go 语言库,它支持过期时间和自动清理。它使用了一个内部的 goroutine 来检查缓存项是否过期,并在需要时自动清理过期的缓存项。使我们能够很方便地将一些数据放在缓存当中。

- name: go-cache
  desc: 一个提供 cache 能力的 go 库
  avatar: https://avatars2.githubusercontent.com/u/416130?s=460&u=8753e86600e300a9811cdc539aa158deec2e2724&v=4
  link: https://github.com/patrickmn/go-cache
  bgColor: "#ffa8a8"

1
2
3
4
5

# 安装

可以使用 go get 命令安装 go-cache 库:

go get github.com/patrickmn/go-cache

1

# 使用

# New

使用 go-cache 库非常简单。通过如下方法可以创建一个缓存对象:

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

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

1
2
3

cache.New() 会创建一个缓存对象,它需要两个参数:

  • 第一个参数:表示缓存项的过期时间,如上示例表示 5 分钟后过期。
  • 第二个参数:表示缓存项的清除时间,如上示例表示 10 分钟后自动清除。

# Set

使用 Set 方法可以将一个键值对添加到缓存中:

c.Set("key", "value", cache.DefaultExpiration)

1

c.Set() 需要传递三个参数:

  • 第一个参数:指定缓存项的 key。
  • 第二个参数:指定缓存项的 value。
  • 第三个参数:指定该项目的过期时间。📢 注意: 一,此处指定的时间优先级大于 New 时的时间,如果这里指定为 2 分钟,则该缓存项将在 2 分钟后过期;二,如果配置为 cache.NoExpiration 则表示缓存项永不过期。

# Get

使用 Get 方法从缓存中获取一个键值对:

value, found := c.Get("key")
if found {
    fmt.Println(value)
}

1
2
3
4

这将获取名为 key 的键的值。如果找到了匹配的键,则 found 为 true。

# Delete

使用 Delete 方法可以将缓存项从缓存中移除:

c.Delete("key")

1

表示直接将名为 key 的缓存项移除。

# Items

使用 Items 方法获取缓存中的所有键值对:

items := c.Items()
fmt.Println(len(items))

1
2

这将返回一个切片,包含缓存中的所有键值对。

# Purge

使用 Purge 方法清空缓存中的所有键值对:

c.Purge()

1

这将清空缓存中的所有键值对。