Files
utility_go/pkg/aycache/cache.go
2025-04-02 11:32:54 +08:00

62 lines
1.2 KiB
Go

package aycache
import (
v1 "github.com/ayflying/utility_go/api/system/v1"
"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() {
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
}