go-cache 是一个内存中的键值对缓存库,支持可过期条目。它是一个线程安全的缓存库,可以设定每个缓存项的生存时间(TTL)。
安装 go-cache:
go get github.com/patrickmn/go-cache
使用示例:
package main
import (
"fmt"
"github.com/patrickmn/go-cache"
"time"
)
func main() {
// 创建一个缓存,设置默认过期时间为 5 分钟,每 10 分钟清理过期项目
c := cache.New(5*time.Minute, 10*time.Minute)
// 设置一个键值,过期时间为 1 分钟
c.Set("key1", "value1", 1*time.Minute)
// 从缓存中获取键值
val, found := c.Get("key1")
if found {
fmt.Println("key1:", val)
}
// 等待超过 1 分钟后再次尝试获取
time.Sleep(70 * time.Second)
val, found = c.Get("key1")
if found {
fmt.Println("key1 still:", val)
} else {
fmt.Println("key1 has expired")
}
}
在这个示例中,我们创建了一个 go-cache 实例,并添加了一个键值对,设置了 1 分钟的过期时间。通过 Set 和 Get 方法可以轻松地添加和检索缓存项。