跳转到内容

输入功能名称或 API · Enter 打开首项 · Esc 关闭

Go 查询,简单一点。

一个客户端,多种数据类型。
共享缓存、后台刷新与按需失效。

开始使用
go get github.com/Waterkyuu/cacheq
Go 1.22+ · 核心库零依赖· MIT

查询与条件请求

共享请求,读取状态,满足条件再加载。

Query · SetEnabled · Updates

查询配置

复用查询定义,在读取、订阅和预加载间共享配置。

QueryOptions · QueryDefinition

缓存与生命周期

复用新鲜数据,后台刷新,自动清理缓存。

StaleTime · GCTime · Prefetch

自动批量加载

合并并发请求或通过 LoadMany 加载已知 key。

NewBatcher · LoadMany · Fetcher

失效与刷新

使关联缓存失效,等待刷新并合并有界补刷。

Invalidate · InvalidateAndWait · RefetchAfterLoad

统一查询筛选

为失效、等待刷新、取消和删除复用查询筛选。

QueryFilter · Keys · Predicate

查询标签

声明查询关联,按标签刷新、取消和删除。

QueryDefinition.Tags · QueryFilter.Tags

可观测性

查看缓存命中、请求合并、加载和清理统计。

Stats

诊断事件

按 key 记录加载原因、请求合并和缓存删除。

SubscribeEvents · LoadID · Dropped

MCP 资源缓存

共享资源读取,保留有效期,接收变化通知。

FetchWithExpiry · Invalidate · Stats

Bubble Tea 示例

运行任务看板,验证多视图共享、刷新和错误恢复。

Query · Updates · Invalidate

原子缓存更新

转换已有缓存数据,检测并发修改冲突。

Update · ErrUpdateConflict

写入与关联失效

订阅写入状态,成功后同步关联查询。

Mutation · SyncErr · Invalidate

执行并发预算

限制后端并发与排队数量,支持共享预算。

NewExecutor · MaxConcurrent · MaxQueued

一个客户端,多种类型。

User 用户详情与 []User 用户列表使用同一客户端,各自保留类型。

type User struct {
Name string
}
loadUser := func(context.Context) (User, error) {
return User{Name: "Alice"}, nil
}
loadUsers := func(context.Context) ([]User, error) {
return []User{{Name: "Alice"}}, nil
}
client := cacheq.NewClient(cacheq.Options{
StaleTime: time.Minute,
})
defer client.Close()
profile := cacheq.Query(client, "user:42", loadUser)
users := cacheq.Query(client, "users", loadUsers)
defer profile.Close()
defer users.Close()
查看完整用法