From 31add99364004a60137534ef2d2522768d6d89f0 Mon Sep 17 00:00:00 2001 From: zyd Date: Mon, 22 Jun 2020 11:40:40 +0800 Subject: [PATCH] =?UTF-8?q?redis=E8=AE=B0=E5=BD=95=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E7=97=95=E8=BF=B9=E7=94=A8=E4=BA=8E=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=AE=A1=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/client/redis.go | 5 +++++ src/config/conf.go | 2 ++ src/handler/proxyhandler.go | 14 +++++++++++--- src/service/field.go | 29 ++++++++++++++++++++++------- 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/client/redis.go b/src/client/redis.go index 903dffc..41cf041 100644 --- a/src/client/redis.go +++ b/src/client/redis.go @@ -92,3 +92,8 @@ func (r Redis) Del(key string) error { bmd := r.Conn.Del(strings.ToUpper(key)) return bmd.Err() } +func (r Redis) RPush(key string, value interface{}) (err error) { + key = fmt.Sprintf("%s-%s", strings.ToUpper(r.Prefix), strings.ToUpper(key)) + bmd := r.Conn.RPush(strings.ToUpper(key), value) + return bmd.Err() +} diff --git a/src/config/conf.go b/src/config/conf.go index 0b8f578..73ef5de 100644 --- a/src/config/conf.go +++ b/src/config/conf.go @@ -12,6 +12,8 @@ var ( ) const CallRecord string = "callRecord" +const SvcTag string = "SVC" +const ApplyTag string = "APPLY" var ProxyConf = struct { MeshId string `json:"meshId"` diff --git a/src/handler/proxyhandler.go b/src/handler/proxyhandler.go index b4dc0f6..81f2460 100644 --- a/src/handler/proxyhandler.go +++ b/src/handler/proxyhandler.go @@ -54,10 +54,18 @@ func Proxy(c *gin.Context) { if sensitiveflag == false { res = service.SensitiveFilter(proxyData, res) } - //调用痕迹进入队列 - //service.RecordCall(proxyData, resp.StatusCode, respbody) //服务调用计次 - service.CallCounts(proxyData) + err = service.CallCounts(proxyData) + if err != nil { + Return(err.Error()) + return nil + } + ////申请调用计次 + err = service.ApplyCallCounts(proxyData) + if err != nil { + Return(err.Error()) + return nil + } Return(res) return nil })) diff --git a/src/service/field.go b/src/service/field.go index 3768c7e..a293308 100644 --- a/src/service/field.go +++ b/src/service/field.go @@ -35,7 +35,7 @@ func QueryCallsCount(filter model.ProxyData) (call bool, sensitiveCall bool, err return } date := time.Now().Format(config.LocalDateFormat) - key := fmt.Sprintf("%s-%s", date, filter.Apply_id) + key := fmt.Sprintf("%d-%s", filter.Apply_id, date) countStr, err := redis.Get(key) if err != nil && err.Error() != `redis: nil` { return @@ -123,16 +123,14 @@ func CallCounts(proxyData model.ProxyData) (err error) { date := time.Now().Format(config.LocalDateFormat) aMonBefore := time.Now().AddDate(0, -1, 0).Format(config.LocalDateFormat) - str, err := redis.Get(string(proxyData.Service_id)) + str, err := redis.Get(fmt.Sprintf("%s-%d", config.SvcTag, proxyData.Service_id)) if err != nil && err.Error() != `redis: nil` { return } - if err != nil { - return - } + dateMap := make(map[string]int) if str != "" { - err = json.Unmarshal([]byte(str), dateMap) + err = json.Unmarshal([]byte(str), &dateMap) if err != nil { return } @@ -150,7 +148,24 @@ func CallCounts(proxyData model.ProxyData) (err error) { } else { dateMap[date] = 1 } - err = redis.Set(string(proxyData.Service_id), dateMap, -1) + content, err := json.Marshal(dateMap) + //fmt.Sprintf("SVCID-%d",proxyData.Service_id) + err = redis.Set(fmt.Sprintf("%s-%d", config.SvcTag, proxyData.Service_id), content, -1) + return +} + +/* +申请调用记录 +*/ +func ApplyCallCounts(proxyData model.ProxyData) (err error) { + redis, err := client.GetRedisClient() + if err != nil { + fmt.Println(err.Error()) + return + } + date := time.Now().Format(config.LocalDateTimeFormat) + err = redis.RPush(fmt.Sprintf("%s-%d", config.ApplyTag, proxyData.Apply_id), []byte(date)) + fmt.Println("rpush data to list failed:", err) return } -- 2.26.0