From e9c9aaf24d5ad5c493334ba09e762bdeae082f99 Mon Sep 17 00:00:00 2001 From: steden <1470804@qq.com> Date: Sat, 26 Oct 2024 22:19:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BD=B1=E5=93=8D=E8=A1=8C?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- redisHash.go | 63 ++++++++++++++++++++++++++++++++++++++++++++++---- redisKey.go | 10 ++++++++ redisList.go | 43 ++++++++++++++++++++++++++++++---- redisSet.go | 48 +++++++++++++++++++++++++++++++++++++- redisString.go | 19 ++++++++++++++- redisZSet.go | 22 ++++++++++++++++++ 6 files changed, 195 insertions(+), 10 deletions(-) diff --git a/redisHash.go b/redisHash.go index cd2f337..2a4f04d 100644 --- a/redisHash.go +++ b/redisHash.go @@ -4,13 +4,14 @@ import ( "context" "encoding/json" "errors" + "reflect" + "strings" + "github.com/farseer-go/collections" "github.com/farseer-go/fs/flog" "github.com/farseer-go/fs/parse" "github.com/farseer-go/fs/types" "github.com/go-redis/redis/v8" - "reflect" - "strings" ) type redisHash struct { @@ -27,6 +28,9 @@ func (receiver *redisHash) HashSetEntity(key string, field string, entity any) e } err = receiver.GetClient().HSet(context.Background(), key, field, string(jsonContent)).Err() + if err == nil { + traceDetail.SetRows(1) + } return err } @@ -39,6 +43,10 @@ func (receiver *redisHash) HashSet(key string, fieldValues ...any) error { traceDetail := receiver.traceManager.TraceRedis("HashSet", key, strings.Join(fields, ",")) err := receiver.GetClient().HSet(context.Background(), key, fieldValues...).Err() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(len(fields)) + } return err } @@ -49,7 +57,12 @@ func (receiver *redisHash) HashGet(key string, field string) (string, error) { if errors.Is(err, redis.Nil) { err = nil } + defer func() { traceDetail.End(err) }() + + if err == nil && result != "" { + traceDetail.SetRows(1) + } return result, err } @@ -66,6 +79,8 @@ func (receiver *redisHash) HashGets(key string, fields ...string) ([]string, err for _, v := range result { arr = append(arr, parse.ToString(v)) } + + traceDetail.SetRows(len(result)) return arr, err } @@ -77,6 +92,8 @@ func (receiver *redisHash) HashGetAll(key string) (map[string]string, error) { err = nil } defer func() { traceDetail.End(err) }() + + traceDetail.SetRows(len(result)) return result, err } @@ -92,8 +109,13 @@ func (receiver *redisHash) HashToEntity(key string, field string, entity any) (b if err != nil { return false, err } + err = json.Unmarshal([]byte(jsonContent), entity) + + if err == nil { + traceDetail.SetRows(1) + } // εεΊεˆ— - return true, json.Unmarshal([]byte(jsonContent), entity) + return true, err } func (receiver *redisHash) HashToArray(key string, arrSlice any) error { @@ -120,6 +142,10 @@ func (receiver *redisHash) HashToArray(key string, arrSlice any) error { newArr = reflect.Append(newArr, reflect.ValueOf(item).Elem()) } arrVal.Set(newArr) + + if err == nil { + traceDetail.SetRows(len(result)) + } return nil } @@ -141,6 +167,10 @@ func (receiver *redisHash) HashToListAny(key string, itemType reflect.Type) (col _ = json.Unmarshal([]byte(vJson), item) lst.Add(reflect.ValueOf(item).Elem().Interface()) } + + if err == nil { + traceDetail.SetRows(len(result)) + } return lst, nil } @@ -160,6 +190,10 @@ func (receiver *redisHash) HashDel(key string, fields ...string) (bool, error) { result, err := receiver.GetClient().HDel(context.Background(), key, fields...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result > 0, err } @@ -168,7 +202,12 @@ func (receiver *redisHash) HashCount(key string) int { result, err := receiver.GetClient().HLen(context.Background(), key).Uint64() defer func() { traceDetail.End(err) }() - return int(result) + + rows := parse.ToInt(result) + if err == nil { + traceDetail.SetRows(rows) + } + return rows } func (receiver *redisHash) HashIncrInt(key string, field string, value int) (int, error) { @@ -176,6 +215,10 @@ func (receiver *redisHash) HashIncrInt(key string, field string, value int) (int result, err := receiver.GetClient().HIncrBy(context.Background(), key, field, parse.Convert(value, int64(value))).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(1) + } return parse.ToInt(result), err } @@ -184,6 +227,10 @@ func (receiver *redisHash) HashIncrInt64(key string, field string, value int64) result, err := receiver.GetClient().HIncrBy(context.Background(), key, field, value).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(1) + } return result, err } @@ -192,6 +239,10 @@ func (receiver *redisHash) HashIncrFloat32(key string, field string, value float result, err := receiver.GetClient().HIncrByFloat(context.Background(), key, field, float64(value)).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(1) + } return parse.ToFloat32(result), err } @@ -200,5 +251,9 @@ func (receiver *redisHash) HashIncrFloat64(key string, field string, value float result, err := receiver.GetClient().HIncrByFloat(context.Background(), key, field, value).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(1) + } return result, err } diff --git a/redisKey.go b/redisKey.go index 29faefb..51fc039 100644 --- a/redisKey.go +++ b/redisKey.go @@ -4,6 +4,8 @@ import ( "context" "strings" "time" + + "github.com/farseer-go/fs/parse" ) type redisKey struct { @@ -15,6 +17,10 @@ func (receiver *redisKey) SetTTL(key string, d time.Duration) (bool, error) { result, err := receiver.GetClient().Expire(context.Background(), key, d).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(1) + } return result, err } @@ -31,6 +37,10 @@ func (receiver *redisKey) Del(keys ...string) (bool, error) { result, err := receiver.GetClient().Del(context.Background(), keys...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result > 0, err } diff --git a/redisList.go b/redisList.go index cb8d4ad..e23e2ee 100644 --- a/redisList.go +++ b/redisList.go @@ -2,9 +2,11 @@ package redis import ( "context" - "github.com/go-redis/redis/v8" "strings" "time" + + "github.com/farseer-go/fs/parse" + "github.com/go-redis/redis/v8" ) type redisList struct { @@ -16,6 +18,10 @@ func (receiver *redisList) ListPushRight(key string, values ...any) (bool, error result, err := receiver.GetClient().RPush(context.Background(), key, values).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result > 0, err } @@ -24,6 +30,10 @@ func (receiver *redisList) ListPushLeft(key string, values ...any) (bool, error) result, err := receiver.GetClient().LPush(context.Background(), key, values).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result > 0, err } @@ -32,10 +42,11 @@ func (receiver *redisList) ListSet(key string, index int64, value any) (bool, er result, err := receiver.GetClient().LSet(context.Background(), key, index, value).Result() defer func() { traceDetail.End(err) }() - if result == "OK" { - return true, err + + if err == nil { + traceDetail.SetRows(1) } - return false, err + return result == "OK", err } func (receiver *redisList) ListRemove(key string, count int64, value any) (bool, error) { @@ -43,6 +54,10 @@ func (receiver *redisList) ListRemove(key string, count int64, value any) (bool, result, err := receiver.GetClient().LRem(context.Background(), key, count, value).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result > 0, err } @@ -54,6 +69,10 @@ func (receiver *redisList) ListCount(key string) (int64, error) { err = nil } defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result, err } @@ -65,6 +84,10 @@ func (receiver *redisList) ListRange(key string, start int64, stop int64) ([]str err = nil } defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(len(result)) + } return result, err } @@ -73,6 +96,10 @@ func (receiver *redisList) ListLeftPop(timeout time.Duration, keys ...string) ([ result, err := receiver.GetClient().BLPop(context.Background(), timeout, keys...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(len(result)) + } return result, err } @@ -81,6 +108,10 @@ func (receiver *redisList) ListRightPop(timeout time.Duration, keys ...string) ( result, err := receiver.GetClient().BRPop(context.Background(), timeout, keys...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(len(result)) + } return result, err } @@ -89,5 +120,9 @@ func (receiver *redisList) ListRightPopPush(source, destination string, timeout result, err := receiver.GetClient().BRPopLPush(context.Background(), source, destination, timeout).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(1) + } return result, err } diff --git a/redisSet.go b/redisSet.go index ad1bf94..312e36f 100644 --- a/redisSet.go +++ b/redisSet.go @@ -3,8 +3,10 @@ package redis import ( "context" "errors" - "github.com/go-redis/redis/v8" "strings" + + "github.com/farseer-go/fs/parse" + "github.com/go-redis/redis/v8" ) type redisSet struct { @@ -15,6 +17,10 @@ func (receiver *redisSet) SetAdd(key string, members ...any) (bool, error) { traceDetail := receiver.traceManager.TraceRedis("SetAdd", key, "") result, err := receiver.GetClient().SAdd(context.Background(), key, members...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result > 0, err } @@ -25,6 +31,10 @@ func (receiver *redisSet) SetCount(key string) (int64, error) { err = nil } defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result, err } @@ -32,6 +42,10 @@ func (receiver *redisSet) SetRemove(key string, members ...any) (bool, error) { traceDetail := receiver.traceManager.TraceRedis("SetRemove", key, "") result, err := receiver.GetClient().SRem(context.Background(), key, members...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result > 0, err } @@ -42,6 +56,10 @@ func (receiver *redisSet) SetGet(key string) ([]string, error) { err = nil } defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(len(result)) + } return result, err } @@ -49,6 +67,10 @@ func (receiver *redisSet) SetIsMember(key string, member any) (bool, error) { traceDetail := receiver.traceManager.TraceRedis("SetIsMember", key, "") result, err := receiver.GetClient().SIsMember(context.Background(), key, member).Result() defer func() { traceDetail.End(err) }() + + if err == nil && result { + traceDetail.SetRows(1) + } return result, err } @@ -56,6 +78,10 @@ func (receiver *redisSet) SetDiff(keys ...string) ([]string, error) { traceDetail := receiver.traceManager.TraceRedis("SetDiff", strings.Join(keys, ","), "") result, err := receiver.GetClient().SDiff(context.Background(), keys...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(len(result)) + } return result, err } @@ -63,6 +89,10 @@ func (receiver *redisSet) SetDiffStore(destination string, keys ...string) (bool traceDetail := receiver.traceManager.TraceRedis("SetDiffStore", strings.Join(keys, ","), "") result, err := receiver.GetClient().SDiffStore(context.Background(), destination, keys...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result > 0, err } @@ -70,6 +100,10 @@ func (receiver *redisSet) SetInter(keys ...string) ([]string, error) { traceDetail := receiver.traceManager.TraceRedis("SetInter", strings.Join(keys, ","), "") result, err := receiver.GetClient().SInter(context.Background(), keys...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(len(result)) + } return result, err } @@ -77,6 +111,10 @@ func (receiver *redisSet) SetInterStore(destination string, keys ...string) (boo traceDetail := receiver.traceManager.TraceRedis("SetInterStore", strings.Join(keys, ","), "") result, err := receiver.GetClient().SInterStore(context.Background(), destination, keys...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result > 0, err } @@ -84,6 +122,10 @@ func (receiver *redisSet) SetUnion(keys ...string) ([]string, error) { traceDetail := receiver.traceManager.TraceRedis("SetUnion", strings.Join(keys, ","), "") result, err := receiver.GetClient().SUnion(context.Background(), keys...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(len(result)) + } return result, err } @@ -91,5 +133,9 @@ func (receiver *redisSet) SetUnionStore(destination string, keys ...string) (boo traceDetail := receiver.traceManager.TraceRedis("SetUnionStore", strings.Join(keys, ","), "") result, err := receiver.GetClient().SUnionStore(context.Background(), destination, keys...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result > 0, err } diff --git a/redisString.go b/redisString.go index 4fd94e3..4c157ee 100644 --- a/redisString.go +++ b/redisString.go @@ -3,8 +3,9 @@ package redis import ( "context" "errors" - "github.com/go-redis/redis/v8" "time" + + "github.com/go-redis/redis/v8" ) type redisString struct { @@ -16,6 +17,10 @@ func (receiver *redisString) StringSet(key string, value any) error { traceDetail := receiver.traceManager.TraceRedis("StringSet", key, "") err := receiver.GetClient().Set(context.Background(), key, value, 0).Err() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(1) + } return err } @@ -27,6 +32,10 @@ func (receiver *redisString) StringGet(key string) (string, error) { err = nil } defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(1) + } return result, err } @@ -35,6 +44,10 @@ func (receiver *redisString) StringSetEX(key string, value any, expiration time. traceDetail := receiver.traceManager.TraceRedis("StringSetNX", key, "") result, err := receiver.GetClient().SetEX(context.Background(), key, value, expiration).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(1) + } return result, err } @@ -43,5 +56,9 @@ func (receiver *redisString) StringSetNX(key string, value any, expiration time. traceDetail := receiver.traceManager.TraceRedis("StringSetNX", key, "") result, err := receiver.GetClient().SetNX(context.Background(), key, value, expiration).Result() defer func() { traceDetail.End(err) }() + + if err == nil && result { + traceDetail.SetRows(1) + } return result, err } diff --git a/redisZSet.go b/redisZSet.go index 1d24bf3..67ab1c0 100644 --- a/redisZSet.go +++ b/redisZSet.go @@ -2,6 +2,8 @@ package redis import ( "context" + + "github.com/farseer-go/fs/parse" "github.com/go-redis/redis/v8" ) @@ -26,6 +28,10 @@ func (receiver *redisZSet) ZSetAdd(key string, members ...*redisZ) (bool, error) } result, err := receiver.GetClient().ZAdd(context.Background(), key, redisZZ...).Result() defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(parse.ToInt(result)) + } return result > 0, err } @@ -36,6 +42,10 @@ func (receiver *redisZSet) ZSetScore(key string, member string) (float64, error) err = nil } defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(1) + } return result, err } @@ -46,6 +56,10 @@ func (receiver *redisZSet) ZSetRange(key string, start int64, stop int64) ([]str err = nil } defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(len(result)) + } return result, err } @@ -56,6 +70,10 @@ func (receiver *redisZSet) ZSetRevRange(key string, start int64, stop int64) ([] err = nil } defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(len(result)) + } return result, err } @@ -67,5 +85,9 @@ func (receiver *redisZSet) ZSetRangeByScore(key string, opt *redisZRangeBy) ([]s err = nil } defer func() { traceDetail.End(err) }() + + if err == nil { + traceDetail.SetRows(len(result)) + } return result, err }