fix: 缓存10分钟UPF总流量查询

This commit is contained in:
TsMask
2024-02-05 18:32:48 +08:00
parent d66f38ad92
commit 97f80f5a33
3 changed files with 30 additions and 1 deletions

View File

@@ -25,3 +25,6 @@ const PWD_ERR_CNT_KEY = "pwd_err_cnt:"
// 网元信息管理
const NE_KEY = "ne_info:"
// 网元数据管理
const NE_DATA_KEY = "ne_data:"

View File

@@ -44,6 +44,7 @@ func (s *SysCacheController) Names(c *gin.Context) {
model.NewSysCacheNames(i18n.TKey(language, "cache.name.rate_limit"), cachekey.RATE_LIMIT_KEY),
model.NewSysCacheNames(i18n.TKey(language, "cache.name.pwd_err_cnt"), cachekey.PWD_ERR_CNT_KEY),
model.NewSysCacheNames(i18n.TKey(language, "cache.name.ne_info"), cachekey.NE_KEY),
model.NewSysCacheNames(i18n.TKey(language, "cache.name.ne_data"), cachekey.NE_DATA_KEY),
}
c.JSON(200, result.OkData(caches))
}
@@ -148,6 +149,7 @@ func (s *SysCacheController) ClearCacheSafe(c *gin.Context) {
model.NewSysCacheNames(i18n.TKey(language, "cache.name.rate_limit"), cachekey.RATE_LIMIT_KEY),
model.NewSysCacheNames(i18n.TKey(language, "cache.name.pwd_err_cnt"), cachekey.PWD_ERR_CNT_KEY),
model.NewSysCacheNames(i18n.TKey(language, "cache.name.ne_info"), cachekey.NE_KEY),
model.NewSysCacheNames(i18n.TKey(language, "cache.name.ne_data"), cachekey.NE_DATA_KEY),
}
for _, v := range caches {
cacheKeys, err := redis.GetKeys("", v.CacheName+":*")

View File

@@ -1,8 +1,12 @@
package service
import (
"encoding/json"
"fmt"
"time"
"ems.agt/src/framework/constants/cachekey"
"ems.agt/src/framework/redis"
"ems.agt/src/modules/network_data/model"
"ems.agt/src/modules/network_data/repository"
)
@@ -48,5 +52,25 @@ func (r *PerfKPIImpl) SelectUPFTotalFlow(neType, rmUID string, day int) map[stri
afterDays := now.AddDate(0, 0, -day)
startDate := afterDays.Format("2006-01-02")
return r.perfKPIRepository.SelectUPFTotalFlow(neType, rmUID, startDate, endDate)
var info map[string]any
// 读取缓存数据
key := fmt.Sprintf("%sUPFTotalFlow_%s_%d", cachekey.NE_DATA_KEY, rmUID, day)
infoStr, _ := redis.Get("", key)
if infoStr != "" {
json.Unmarshal([]byte(infoStr), &info)
expireSecond, _ := redis.GetExpire("", key)
expireMinute := (time.Duration(int64(expireSecond)) * time.Second)
if expireMinute > 1*time.Minute {
return info
}
}
info = r.perfKPIRepository.SelectUPFTotalFlow(neType, rmUID, startDate, endDate)
// 保存到缓存
infoJSON, _ := json.Marshal(info)
redis.SetByExpire("", key, string(infoJSON), time.Duration(10)*time.Minute)
return info
}