golang,go,博客,开源,编程
GoCache
是一个简单、高效的 Go 语言缓存库,用于在内存中存储和管理缓存数据。它提供了类似于 Memcached 的缓存功能,支持设置缓存的过期时间和自动清除失效的缓存。GoCache
的设计目标是简单易用,并能够满足大多数普通缓存需求。
GoCache
只会将数据保存在内存中,因此非常适合用作高效的内存缓存。GoCache
线程安全,可以在多个 goroutine 中并发使用。要使用 GoCache
,可以通过 go get
命令安装:
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)
// 设置一个缓存值,key 为 "foo",value 为 "bar",默认过期时间
c.Set("foo", "bar", cache.DefaultExpiration)
// 获取缓存值
val, found := c.Get("foo")
if found {
fmt.Println("Found:", val)
} else {
fmt.Println("Not Found")
}
}
package main
import (
"fmt"
"github.com/patrickmn/go-cache"
"time"
)
func main() {
c := cache.New(5*time.Minute, 10*time.Minute)
// 设置缓存,指定过期时间为 1 分钟
c.Set("baz", "qux", 1*time.Minute)
// 获取缓存
val, found := c.Get("baz")
if found {
fmt.Println("Found:", val)
} else {
fmt.Println("Not Found")
}
}
package main
import (
"fmt"
"github.com/patrickmn/go-cache"
"time"
)
func main() {
c := cache.New(5*time.Minute, 10*time.Minute)
// 设置缓存
c.Set("foo", "bar", cache.DefaultExpiration)
// 删除缓存
c.Delete("foo")
// 尝试获取缓存
val, found := c.Get("foo")
if found {
fmt.Println("Found:", val)
} else {
fmt.Println("Not Found") // 输出: Not Found
}
}
package main
import (
"fmt"
"github.com/patrickmn/go-cache"
"time"
)
func main() {
c := cache.New(5*time.Minute, 10*time.Minute)
// 设置缓存
c.Set("foo", "bar", cache.DefaultExpiration)
c.Set("baz", "qux", cache.DefaultExpiration)
// 删除所有缓存
c.Flush()
// 尝试获取缓存
val, found := c.Get("foo")
if found {
fmt.Println("Found:", val)
} else {
fmt.Println("Not Found") // 输出: Not Found
}
}
New(defaultExpiration, cleanupInterval)
:创建一个新的缓存实例,defaultExpiration
是缓存项的默认过期时间,cleanupInterval
是清理过期缓存的时间间隔。Set(key, value, expiration)
:设置缓存项,key
为缓存的键,value
为缓存的值,expiration
是缓存过期的时间。如果 expiration
为 cache.DefaultExpiration
,则使用默认过期时间。Get(key)
:获取缓存项的值,如果该项不存在,返回 false
。Delete(key)
:删除指定的缓存项。Flush()
:清除所有缓存项。GoCache
的 API 设计非常简洁,易于上手,适合缓存处理简单的场景。总的来说,GoCache
是一个轻量级且功能强大的缓存解决方案,适用于需要内存缓存的场景,能够帮助提高应用的响应速度和性能。