GitHub - kocor01/kcache: go 本地缓存解决方案,支持本地缓存过期、缓存过期自维护机制。
最近系统并发很高,单接口10W的 QPS,对 redis 压力很大,大量的热KEY导致 redis 分片CPU资源经常告警。计划用 go 本地缓存缓解 redis 的压力。
在原有数据链路的基础上,增加一层GO本地缓存(一般情况下,设置几秒的短缓存),降低对后链路Redis、Db压力,同时提升系统性能。
支持本地缓存自动过期,注入一个函数实现缓存过期后缓存数据的自动维护。
通过 Kcache 中间函数,该函数满足type GetKcDatafunc。把原有的获取数据的函数包裹起来,即可实现对 Kcache 的接入,对原有业务代码侵入极小。接入灵活可控,成本很低。
本地电脑压测轻松达到每秒 100W 并发。
使用请参考 使用实例
创建KCache
-
创建一个KCache, 默认本地缓存过期时间 5s
kc := New()
-
创建一个KCache, 自定义本地缓存过期时间
kc := NewWithExp(2 * time.Second)
获取缓存
-
GET 获取缓存,函数不带参数,本地缓存过期时间为创建 KCache 时设置的全局过期时间。
kc := New() d := kc.Get("myKey", G