From 27435b57b74254fa8798d62e34f7a22a9dc27d6f Mon Sep 17 00:00:00 2001 From: ayflying Date: Thu, 21 Aug 2025 10:30:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=93=E5=AD=98=E9=A9=B1?= =?UTF-8?q?=E5=8A=A8=EF=BC=8C=E7=AC=AC=E4=BA=8C=E4=B8=AA=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E4=B8=8D=E5=90=8C=E7=9A=84?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/aycache/cache.go | 11 +++++++++-- pkg/aycache/drive/redis.go | 23 +++++++++++++---------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/pkg/aycache/cache.go b/pkg/aycache/cache.go index e3860b6..65405a0 100644 --- a/pkg/aycache/cache.go +++ b/pkg/aycache/cache.go @@ -1,6 +1,8 @@ package aycache import ( + "math" + v1 "github.com/ayflying/utility_go/api/system/v1" "github.com/ayflying/utility_go/internal/boot" "github.com/ayflying/utility_go/pkg/aycache/drive" @@ -9,7 +11,6 @@ import ( "github.com/gogf/gf/v2/os/gcache" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" - "math" ) // Mod 定义缓存模块结构体,包含一个 gcache.Cache 客户端实例 @@ -19,6 +20,7 @@ type Mod struct { // QPSCount 记录缓存的 QPS 计数 var QPSCount int + // QPS 是一个 Prometheus 指标,用于记录当前缓存的 QPS 数量 var QPS = promauto.NewGauge( prometheus.GaugeOpts{ @@ -53,8 +55,13 @@ func New(_name ...string) gcache.Adapter { // 创建内存缓存适配器 cacheAdapterObj = drive2.NewAdapterMemory() case "redis": + //第二个参数为配置名称,默认为default + var typ = "default" + if len(_name) >= 2 { + typ = _name[1] + } // 创建 Redis 缓存适配器 - cacheAdapterObj = drive2.NewAdapterRedis() + cacheAdapterObj = drive2.NewAdapterRedis(typ) case "file": // 创建文件缓存适配器,指定缓存目录为 "runtime/cache" cacheAdapterObj = drive2.NewAdapterFile("runtime/cache") diff --git a/pkg/aycache/drive/redis.go b/pkg/aycache/drive/redis.go index 734805c..ff43354 100644 --- a/pkg/aycache/drive/redis.go +++ b/pkg/aycache/drive/redis.go @@ -7,19 +7,22 @@ import ( "github.com/gogf/gf/v2/os/gctx" ) -var adapterRedisClient gcache.Adapter -var adapterRedisCache = gcache.New() +var adapterRedisClient = make(map[string]gcache.Adapter) +var adapterRedisCache = make(map[string]*gcache.Cache) -func NewAdapterRedis() gcache.Adapter { - - if adapterRedisClient == nil { - _cfg, _ := g.Cfg().Get(gctx.New(), "redis.default") +func NewAdapterRedis(name string) gcache.Adapter { + if adapterRedisClient[name] == nil { + _cfg, err := g.Cfg().Get(gctx.New(), "redis."+name) + if err != nil { + panic("当前redis配置不存在") + } var cfg *gredis.Config _cfg.Scan(&cfg) redisObj, _ := gredis.New(cfg) - //adapterRedisClient = gcache.NewAdapterRedis(g.Redis("default")) - adapterRedisClient = gcache.NewAdapterRedis(redisObj) - adapterRedisCache.SetAdapter(adapterRedisClient) + //adapterRedisClient[name] = gcache.NewAdapterRedis(g.Redis(name)) + adapterRedisClient[name] = gcache.NewAdapterRedis(redisObj) + adapterRedisCache[name] = gcache.New() + adapterRedisCache[name].SetAdapter(adapterRedisClient[name]) } - return adapterRedisCache + return adapterRedisCache[name] }