百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
G

gcache

> 编程语言
开源

一个用于golang的内存缓存库。它支持多种淘汰策略:LRU、LFU、ARC。

2.7K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

一个用于golang的内存缓存库。它支持多种淘汰策略:LRU、LFU、ARC。

GCache

用于 golang 的缓存库。它支持可过期缓存、LFU、LRU 和 ARC。

特性

  • 支持可过期缓存、LFU、LRU 和 ARC。

  • 并发安全。

  • 支持事件处理器,可驱逐、清除和添加条目。(可选)

  • 如果缓存不存在,则自动加载。(可选)

安装

$ go get github.com/bluele/gcache

示例

手动设置键值对。

go
package main

import (
  "github.com/bluele/gcache"
  "fmt"
)

func main() {
  gc := gcache.New(20).
    LRU().
    Build()
  gc.Set("key", "ok")
  value, err := gc.Get("key")
  if err != nil {
    panic(err)
  }
  fmt.Println("Get:", value)
}
Get: ok

手动设置键值对,并带有过期时间。

go
package main

import (
  "github.com/bluele/gcache"
  "fmt"
  "time"
)

func main() {
  gc := gcache.New(20).
    LRU().
    Build()
  gc.SetWithExpire("key", "ok", time.Second*10)
  value, _ := gc.Get("key")
  fmt.Println("Get:", value)

  // Wait for value to expire
  time.Sleep(time.Second*10)

  value, err := gc.Get("key")
  if err != nil {
    panic(err)
  }
  fmt.Println("Get:", value)
}
Get: ok
// 10 seconds later, new attempt:
panic: ErrKeyNotFound

自动加载值

go
package main

import (
  "github.com/bluele/gcache"
  "fmt"
)

func main() {
  gc := gcache.New(20).
    LRU().
    LoaderFunc(func(key interface{}) (interface{}, error) {
      return "ok", nil
    }).
    Build()
  value, err := gc.Get("key")
  if err != nil {
    panic(err)
  }
  fmt.Println("Get:", value)
}
Get: ok

自动加载值并带有过期时间

…
Get: ok
evicted key: key
Get: ok
purged key: key

缓存算法

  • 最不经常使用(LFU)

首先丢弃最不经常使用的条目。

go
  func main() {
    // size: 10
    gc := gcache.New(10).
      LFU().
      Build()
    gc.Set("key", "value")
  }
  • 最近最少使用(LRU) 优先丢弃最近最少使用的项目。
go
  func main() {
    // size: 10
    gc := gcache.New(10).
      LRU().
      Build()
    gc.Set("key", "value")
  }
  • 自适应替换缓存(ARC) 持续脱发

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Goarccachegogolang

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言