package aycache import ( v1 "github.com/ayflying/utility_go/api/system/v1" "github.com/ayflying/utility_go/internal/boot" "github.com/ayflying/utility_go/pkg/aycache/drive" drive2 "github.com/ayflying/utility_go/pkg/aycache/drive" "github.com/ayflying/utility_go/service" "github.com/gogf/gf/v2/os/gcache" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" "math" ) type Mod struct { client *gcache.Cache } var ( QPSCount int QPS = promauto.NewGauge( prometheus.GaugeOpts{ Name: "Cache_QPS", Help: "当前缓存QPS数量", }, ) ) func init() { boot.AddFunc(func() { //初始化指标 service.SystemCron().AddCron(v1.CronType_MINUTE, func() error { QPS.Set(math.Round(float64(QPSCount) / 60)) QPSCount = 0 return nil }) }) } func New(_name ...string) gcache.Adapter { var cacheAdapterObj gcache.Adapter var name = "cache" if len(_name) > 0 { name = _name[0] } switch name { case "cache": cacheAdapterObj = drive2.NewAdapterMemory() case "redis": cacheAdapterObj = drive2.NewAdapterRedis() case "file": cacheAdapterObj = drive2.NewAdapterFile("runtime/cache") case "es": cacheAdapterObj = drive.NewAdapterElasticsearch(_name[1]) } //var client = gcache.New() //client.SetAdapter(cacheAdapterObj) QPSCount++ return cacheAdapterObj }