golang,go,博客,开源,编程
VictoriaMetrics/fastcache
是由 VictoriaMetrics 开发的一个高性能、线程安全的内存缓存库,旨在作为 Go 语言标准库 map
的高效替代方案,用于缓存键值对(key-value pairs)。
它在性能、并发处理能力和内存利用率方面表现优异,尤其适用于对性能要求较高的应用场景,如监控系统、代理服务、数据库中间件等。
它的缺点像它的优点一样明显。
它比 BigCache
快!
使用 go get
安装:
go get github.com/VictoriaMetrics/fastcache
package main
import (
"fmt"
"github.com/VictoriaMetrics/fastcache"
)
func main() {
// 创建一个最大容量为 1GB 的缓存
cache := fastcache.New(1 * 1024 * 1024 * 1024) // 1GB
key := []byte("myKey")
value := []byte("myValue")
// 设置缓存
cache.Set(key, value)
// 获取缓存
got := cache.Get(nil, key)
if got != nil {
fmt.Printf("Cache hit: %s\n", got)
} else {
fmt.Println("Cache miss")
}
// 删除缓存(不是强制的)
cache.Del(key)
}
函数名 | 描述 |
---|---|
New(maxBytes) | 创建一个新的缓存实例,容量为 maxBytes 字节。 |
Set(k, v) | 设置键值对;若缓存已满,则淘汰旧数据。 |
Get(dst, k) | 获取 key 对应的值,若存在则将值写入 dst 后返回。 |
Del(k) | 删除 key(不是强制的,因为缓存自动淘汰)。 |
Has(k) | 判断缓存中是否存在某个 key。 |
Reset() | 清空所有缓存数据。 |
MarshalTo() /UnmarshalFrom() | 用于持久化缓存内容到磁盘或从磁盘恢复。 |
BigCache
和 FreeCache
,但更加偏向性能优化而非复杂功能。与 sync.Map
和标准的 map+sync.RWMutex
相比,在多数读写场景中性能优越:
简单介绍到这,项目代码量很少, 感兴趣的道友建议直接阅读源码,。