From 6a98542808a41b0c0fc42c5e1a7a8a927347abcb Mon Sep 17 00:00:00 2001 From: iamhujiebin <458249864@qq.com> Date: Thu, 31 Aug 2023 22:33:58 +0800 Subject: [PATCH] feat:redisCluster --- debug.ini | 2 ++ domain/cache/modelRedis.go | 8 ++--- domain/cache/user_c/user.go | 8 ++--- domain/model/common/cache_medal.go | 53 +++++------------------------- domain/model/user_m/medal.go | 4 +-- local.ini | 2 ++ main.go | 2 ++ release.ini | 2 ++ 8 files changed, 27 insertions(+), 54 deletions(-) diff --git a/debug.ini b/debug.ini index 976183c..00796cb 100755 --- a/debug.ini +++ b/debug.ini @@ -11,6 +11,8 @@ MYSQL_DB=hilo_code [REDIS] REDIS_HOST=47.244.34.27:6379 REDIS_PASSWORD=8QZ9JD1zLvPR3yHf +REDIS_CLUSTER_HOST=47.244.34.27:6379 +REDIS_CLUSTER_PASSWORD=8QZ9JD1zLvPR3yHf [JWT] SECRET=hilo1632 ISSUER_API=hiloApi diff --git a/domain/cache/modelRedis.go b/domain/cache/modelRedis.go index 73f2ad4..00d326e 100755 --- a/domain/cache/modelRedis.go +++ b/domain/cache/modelRedis.go @@ -27,7 +27,7 @@ func SetJSON(model *domain.Model, key string, obj interface{}) (err error) { if err != nil { return err } - return model.Redis.Set(model.Context, key, value, DEFAULT_TTL).Err() + return model.RedisCluster.Set(model.Context, key, value, DEFAULT_TTL).Err() } // 获取redis中json结构体 @@ -37,7 +37,7 @@ func GetJSON(model *domain.Model, key string, obj interface{}) (err error) { defer func() { model.Log.Infof("GetJson key:%v,value:%s,obj:%v,err:%v", key, value, obj, err) }() - value, err = model.Redis.Get(model.Context, key).Bytes() + value, err = model.RedisCluster.Get(model.Context, key).Bytes() if err != nil { // may redisV2.Nil return @@ -59,7 +59,7 @@ func TryLock(model *domain.Model, key string, acquireTimeout, expireTimeout time if time.Now().After(deadline) { return false } - flag, err := model.Redis.SetNX(model, key, "1", expireTimeout).Result() + flag, err := model.RedisCluster.SetNX(model, key, "1", expireTimeout).Result() if err != nil || !flag { time.Sleep(time.Millisecond * 10) } else { @@ -70,5 +70,5 @@ func TryLock(model *domain.Model, key string, acquireTimeout, expireTimeout time // 解锁 func UnLock(model *domain.Model, key string) { - model.Redis.Del(model, key) + model.RedisCluster.Del(model, key) } diff --git a/domain/cache/user_c/user.go b/domain/cache/user_c/user.go index f84f79f..54d9c58 100755 --- a/domain/cache/user_c/user.go +++ b/domain/cache/user_c/user.go @@ -53,7 +53,7 @@ func ToUserId(model *domain.Model, externalId mysql.Str) (mysql.ID, error) { if externalId == "" { return 0, myerr.NewSysError("externalId 不能为空") } - userId, err := model.Redis.Get(model.Context, user_k.GetExternalIdToUidKey(externalId)).Int64() + userId, err := model.RedisCluster.Get(model.Context, user_k.GetExternalIdToUidKey(externalId)).Int64() if err != nil && err != redisV8.Nil { return 0, err } @@ -76,7 +76,7 @@ func ToUserIdByCode(model *domain.Model, code mysql.Str) (mysql.ID, error) { if code == "" { return 0, myerr.NewSysError("code 不能为空") } - userId, err := model.Redis.Get(model.Context, user_k.GetCodeToUidKey(code)).Int64() + userId, err := model.RedisCluster.Get(model.Context, user_k.GetCodeToUidKey(code)).Int64() if err != nil && err != redisV8.Nil { return 0, err } @@ -105,11 +105,11 @@ func cacheUserTiny(model *domain.Model, user *user_m.User) error { // return err //} // cache externalId->userId - if err := model.Redis.SetEX(model.Context, user_k.GetExternalIdToUidKey(user.ExternalId), user.ID, cache.GetDefaultTTL()).Err(); err != nil { + if err := model.RedisCluster.SetEX(model.Context, user_k.GetExternalIdToUidKey(user.ExternalId), user.ID, cache.GetDefaultTTL()).Err(); err != nil { return err } // cache code->userId - if err := model.Redis.SetEX(model.Context, user_k.GetCodeToUidKey(user.Code), user.ID, cache.GetDefaultTTL()).Err(); err != nil { + if err := model.RedisCluster.SetEX(model.Context, user_k.GetCodeToUidKey(user.Code), user.ID, cache.GetDefaultTTL()).Err(); err != nil { return err } if err := cache.SetJSON(model, user_k.GetUserTinyKey(user.ID), userTiny); err != nil { diff --git a/domain/model/common/cache_medal.go b/domain/model/common/cache_medal.go index bedae2c..fba4dd4 100755 --- a/domain/model/common/cache_medal.go +++ b/domain/model/common/cache_medal.go @@ -1,56 +1,21 @@ package common import ( - "context" - "encoding/json" - "git.hilo.cn/hilo-common/mylogrus" "git.hilo.cn/hilo-common/resource/mysql" - "git.hilo.cn/hilo-common/resource/redisCli" - "hilo-user/_const/redis_key" - "hilo-user/myerr" + "github.com/bluele/gcache" "time" ) -func GetUserMedalMergeCache(userId mysql.ID) ([]uint32, error) { - bData, err := GetCache(redis_key.GetUserMedalMerge(userId)) - if err != nil { - return nil, myerr.WrapErr(err) - } - - res := make([]uint32, 0) - err = json.Unmarshal(bData, &res) - if err != nil { - return nil, myerr.WrapErr(err) - } - return res, nil -} +// 改成lru +var userMedalMergeLru = gcache.New(10000).LRU().Build() -func GetCache(key string) ([]byte, error) { - data, err := redisCli.GetRedis().Get(context.Background(), key).Bytes() - if err != nil { - return nil, err - } - return data, nil -} - -func SetCache(key string, data interface{}, expire time.Duration) error { - jData, err := json.Marshal(data) - if err != nil { - return err - } - err = redisCli.GetRedis().Set(context.Background(), key, jData, expire).Err() - if err != nil { - mylogrus.MyLog.Errorf("SetCache key:%s, data:%v, err:%s", key, data, err) - return err +func GetUserMedalMergeCache(userId mysql.ID) ([]uint32, error) { + if data, err := userMedalMergeLru.Get(userId); err == nil { + return data.([]uint32), nil } - return nil + return nil, nil } -func SetUserMedalMergeCache(userId mysql.ID, data []uint32) error { - err := SetCache(redis_key.GetUserMedalMerge(userId), data, time.Hour*2) - if err != nil { - mylogrus.MyLog.Errorf("SetUserMedalMerge err:%s", err) - return myerr.WrapErr(err) - } - return nil +func SetUserMedalMergeCache(userId mysql.ID, data []uint32) { + _ = userMedalMergeLru.SetWithExpire(userId, data, time.Minute*15) } diff --git a/domain/model/user_m/medal.go b/domain/model/user_m/medal.go index 9712bb4..e4875d0 100755 --- a/domain/model/user_m/medal.go +++ b/domain/model/user_m/medal.go @@ -61,8 +61,8 @@ func GetUserMedalMerge(logger *logrus.Entry, db *gorm.DB, userId mysql.ID) ([]ui } } } - logger.Infof("maxGrade %+v", maxGrades) - logger.Infof("maxMedalIds %+v", maxMedalIds) + //logger.Infof("maxGrade %+v", maxGrades) + //logger.Infof("maxMedalIds %+v", maxMedalIds) mIds := result result = make([]uint32, 0) diff --git a/local.ini b/local.ini index d46aed4..c9710a0 100755 --- a/local.ini +++ b/local.ini @@ -11,6 +11,8 @@ MYSQL_DB=hilo_code [REDIS] REDIS_HOST=47.244.34.27:6379 REDIS_PASSWORD=8QZ9JD1zLvPR3yHf +REDIS_CLUSTER_HOST=47.244.34.27:6379 +REDIS_CLUSTER_PASSWORD=8QZ9JD1zLvPR3yHf [JWT] SECRET=hilo1632 ISSUER_API=hiloApi diff --git a/main.go b/main.go index 2c2a898..5c07bf8 100755 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "fmt" "git.hilo.cn/hilo-common/resource/consul" + "git.hilo.cn/hilo-common/resource/redisCli" "hilo-user/cron" "hilo-user/domain/service/event_s" "hilo-user/route" @@ -17,6 +18,7 @@ const ( func main() { cron.Init() // 开启定时任务 event_s.EventInit() // 注册事件(内部事件+mysql拟kafka) + redisCli.InitCluster() // redis集群 r := route.InitRouter() // 注册路由 consul.RegisterToConsul(PORT, RegisterName, RegisterTag) // 服务注册 r.Run(fmt.Sprintf(":%d", PORT)) // 启动服务 diff --git a/release.ini b/release.ini index ac53e28..65e5801 100755 --- a/release.ini +++ b/release.ini @@ -11,6 +11,8 @@ MYSQL_DB=hilo_code [REDIS] REDIS_HOST=r-eb3btxn8vfdsuwdbuf.redis.dubai.rds.aliyuncs.com:6379 REDIS_PASSWORD= +REDIS_CLUSTER_HOST=r-eb3yt6k8zgxs62kjjs.redis.dubai.rds.aliyuncs.com:6379 +REDIS_CLUSTER_PASSWORD= [JWT] SECRET=hilo1504 ISSUER_API=hiloApi -- 2.22.0