
Go 查询,简单一点。
一个客户端,多种数据类型。
共享缓存、后台刷新与按需失效。
go get github.com/Waterkyuu/cacheq查询与条件请求
共享请求,读取状态,满足条件再加载。
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 · DroppedMCP 资源缓存
共享资源读取,保留有效期,接收变化通知。
FetchWithExpiry · Invalidate · StatsBubble 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()