data
缓存抽象与本地缓存——LocalCache/SingleFlightCache/缓存键构造
🌐 项目主页:https://oekit.github.io/ · 名称由来:Open Easy Kit(开源 · 易用 · 工具集合)
🤖 AI Agent:本仓规范与硬规则见 AGENTS.md;机器可读索引见 llms.txt(接口签名以源码为准)。
安装
go get github.com/oekit/data@v0.3.4
这个仓库做什么
data 提供缓存抽象与本地缓存:CacheAside 接口 + LocalCache(TTL/容量上限/
空值防穿透)+ SingleFlightCache(并发回源合并防击穿)+ 缓存键构造。
需要刷新检查器(TTL 到期后台刷新、失败按 failTTL 降级、并发请求合并)?
在 pkg 的 cache 子包:cache.NewChecker。
快速使用
import "github.com/oekit/data/cache"
c := cache.NewLocalCache(cache.LocalConfig[HotConfig]{
TTL: time.Minute, // 过期时间;MaxSize 容量上限;NullTTL 空值防穿透
MaxSize: 1024,
Source: func(ctx context.Context, key string) (*HotConfig, error) {
return loadHotConfig(ctx, key) // 未命中回源(Cache-Aside)
},
})
cfg, err := c.GetOrLoad(ctx, "tenant:acme")
边界
- Redis 后端(同一接口的 Redis 实现)在 redis
- SQL/GORM 在 gorm;定时任务在
timertask/
- 本仓不依赖任何数据库驱动
矩阵总览(23 活跃模块,自动生成)
依赖严格自底向上;微库已合并为 pkg,旧微库仓已删除。
本仓在矩阵中的位置与依赖见上表「矩阵内依赖」列。历史沿革:源自 ekit 单体库
(git.enjoye.top/enjoydream/ekit v0.34.0,冻结维护),2026-10 拆分为独立 module。
License
MIT — 见 LICENSE