0

go-cache包的使用简析

 1 year ago
source link: https://wiki.eryajf.net/pages/8f3ba7/#%E5%89%8D%E8%A8%80
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

go-cache包的使用简析

这篇文章的发布时间较早,其中的内容可能已经过时,阅读时请注意甄别。

# 前言

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

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

# 安装

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

go get github.com/patrickmn/go-cache
6b55ce2395c8e90c.jpg

# 使用

# New

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

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

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

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

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

# Set

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

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

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

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

# Get

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

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

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

# Delete

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

c.Delete("key")

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

# Items

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

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

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

# Purge

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

c.Purge()

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK