golang-lru 使用方法
时间: 2024-03-30 15:27:15 浏览: 313
golang-lru 是一个 Golang 语言实现的 LRU 缓存库,它提供了一个简单易用的 API 用于创建和使用 LRU 缓存。
下面是一个简单的使用示例:
```go
package main
import (
"fmt"
"github.com/hashicorp/golang-lru"
)
func main() {
// 创建一个 LRU 缓存,容量为 2
cache, _ := lru.New(2)
// 添加两个元素到缓存中
cache.Add("key1", "value1")
cache.Add("key2", "value2")
// 从缓存中获取一个元素
if v, ok := cache.Get("key1"); ok {
fmt.Println(v.(string))
}
// 添加一个新元素到缓存中,此时缓存容量已满,会自动淘汰最久未使用的元素 "key2"
cache.Add("key3", "value3")
// 遍历缓存中的所有元素
for _, k := range cache.Keys() {
if v, ok := cache.Get(k); ok {
fmt.Println(k, v.(string))
}
}
}
```
运行上述代码,将会输出:
```
value1
key1 value1
key3 value3
```
在这个示例中,我们首先使用 `lru.New()` 函数创建了一个容量为 2 的 LRU 缓存。然后我们添加了两个元素到缓存中,并从缓存中获取了一个元素。接着我们添加了一个新元素,此时缓存已满,会自动淘汰最久未使用的元素 "key2"。最后我们遍历了缓存中的所有元素,输出了它们的键和值。
除了 `Add()` 和 `Get()` 方法外,golang-lru 还提供了 `Remove()` 和 `Contains()` 方法来删除和判断缓存中是否存在某个元素,以及 `Len()` 和 `Clear()` 方法来获取缓存中元素的数量和清空缓存。
golang-lru 还支持并发安全,你可以通过 `NewWithOptions()` 函数创建一个并发安全的 LRU 缓存,具体用法请参考官方文档:https://pkg.go.dev/github.com/hashicorp/golang-lru。
阅读全文