From a37090f8bed0136f9d3d3de0b7c6c50bbc5a40b3 Mon Sep 17 00:00:00 2001 From: JiebinHu <458249864@qq.com> Date: Sat, 2 Sep 2023 18:15:27 +0800 Subject: [PATCH] feat:redis CLuster --- common/config/config.go | 6 +++-- common/redisCli/redis.go | 45 +++++++------------------------- common/redisCli/util.go | 56 ---------------------------------------- debug.ini | 2 ++ local.ini | 2 ++ main.go | 6 ++--- release.ini | 2 ++ 7 files changed, 23 insertions(+), 96 deletions(-) delete mode 100644 common/redisCli/util.go diff --git a/common/config/config.go b/common/config/config.go index c774286..67baa4e 100644 --- a/common/config/config.go +++ b/common/config/config.go @@ -26,8 +26,10 @@ type MysqlCodeConfig struct { //redis配置 type RedisConfig struct { - REDIS_HOST string - REDIS_PASSWORD string + REDIS_HOST string + REDIS_PASSWORD string + REDIS_CLUSTER_HOST string + REDIS_CLUSTER_PASSWORD string } //jwt diff --git a/common/redisCli/redis.go b/common/redisCli/redis.go index b55ab0e..a2b1e3d 100644 --- a/common/redisCli/redis.go +++ b/common/redisCli/redis.go @@ -8,52 +8,27 @@ import ( "log" ) -var RedisClient *redis.Client - -var RedisClient1 *redis.Client +var RedisCluster *redis.Client func init() { - RedisClient = redis.NewClient(&redis.Options{ - Addr: config.GetConfigRedis().REDIS_HOST, - Password: config.GetConfigRedis().REDIS_PASSWORD, // no password set - DB: 0, // use default DB - PoolSize: 2000, - MinIdleConns: 200, - }) - mylogrus.MyLog.Infoln(config.GetConfigRedis().REDIS_HOST) - mylogrus.MyLog.Infoln(config.GetConfigRedis().REDIS_PASSWORD) - pong, err := RedisClient.Ping(context.Background()).Result() - if err != nil { - mylogrus.MyLog.Warn(err) - mylogrus.MyLog.Fatal("redis db0 connect fail") - } else { - mylogrus.MyLog.Info("redis db0 connection success - ", pong) - } - - RedisClient1 = redis.NewClient(&redis.Options{ - Addr: config.GetConfigRedis().REDIS_HOST, - Password: config.GetConfigRedis().REDIS_PASSWORD, // no password set - DB: 1, // use default DB + RedisCluster = redis.NewClient(&redis.Options{ + Addr: config.GetConfigRedis().REDIS_CLUSTER_HOST, + Password: config.GetConfigRedis().REDIS_CLUSTER_PASSWORD, // no password set + DB: 0, // use default DB PoolSize: 200, MinIdleConns: 20, }) - mylogrus.MyLog.Infoln(config.GetConfigRedis().REDIS_HOST) - mylogrus.MyLog.Infoln(config.GetConfigRedis().REDIS_PASSWORD) - pong, err = RedisClient1.Ping(context.Background()).Result() + pong, err := RedisCluster.Ping(context.Background()).Result() if err != nil { mylogrus.MyLog.Warn(err) - mylogrus.MyLog.Fatal("redis db1 connect fail") + mylogrus.MyLog.Fatal("redis db0 connect fail") } else { - log.Println("redis db1 connection success - " + pong) + log.Println("redis db0 connection success - " + pong) } // log hook //RedisClient.AddHook(redisHook{}) } -func GetRedis() *redis.Client { - return RedisClient -} - -func GetRedis1() *redis.Client { - return RedisClient1 +func GetRedisCluster() *redis.Client { + return RedisCluster } diff --git a/common/redisCli/util.go b/common/redisCli/util.go deleted file mode 100644 index cfa5bec..0000000 --- a/common/redisCli/util.go +++ /dev/null @@ -1,56 +0,0 @@ -package redisCli - -import ( - "context" - "hilo-micCenter/common/mylogrus" - "strconv" - "time" -) - -//这个用户避免多个服务器并发问题。 -func SetNX(key string, value interface{}, expiration time.Duration, callBack func()) { - flag, err := RedisClient.SetNX(context.Background(), key, value, expiration).Result() - if err != nil { - mylogrus.MyLog.Errorf("key:%v lock start setNx err: %v", key, err) - } - if !flag { - mylogrus.MyLog.Infof("key:%v lock setNx has lock", key) - return - } - mylogrus.MyLog.Infof("key:%v lock setNx begin", key) - callBack() - //执行结束之后,移除key - //RedisClient.Del(context.Background(), key) - mylogrus.MyLog.Infof("key:%v lock setNx end", key) -} - -//setNx没有,结束后,没有移除 -/*func SetNxNoDel(key string, value interface{}, expiration time.Duration, callBack func()) { - flag, err := RedisClient.SetNX(context.Background(), key, value, expiration).Result() - if err != nil { - mylogrus.MyLog.Errorf("key:%v lock start setNx err: %v", key, err) - } - if !flag { - mylogrus.MyLog.Infof("key:%v lock setNx has lock", key) - return - } - mylogrus.MyLog.Infof("key:%v lock setNx begin", key) - callBack() - mylogrus.MyLog.Infof("key:%v lock setNx end", key) -}*/ - -func ClearExpired(key string, expireSec int64) error { - return GetRedis().ZRemRangeByScore(context.Background(), key, - "0", strconv.FormatInt(time.Now().Unix()-expireSec, 10)).Err() -} - -func Lock(key string, expiration time.Duration) bool { - flag, err := RedisClient.SetNX(context.Background(), key, 1, expiration).Result() - if err != nil { - return false - } - if !flag { - return false - } - return true -} diff --git a/debug.ini b/debug.ini index 696fef9..fc7ab8f 100644 --- 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/local.ini b/local.ini index 65d1298..f97ca1a 100644 --- 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 896226d..4491e33 100644 --- a/main.go +++ b/main.go @@ -44,7 +44,7 @@ func check() { for { select { case <-tick.C: - l, err := redisCli.GetRedis().LLen(context.Background(), micInfoChange).Result() + l, err := redisCli.GetRedisCluster().LLen(context.Background(), micInfoChange).Result() if err != nil { mylogrus.MyLog.Errorf("cron micChangeSys msg error,left %v-%v", l, err) } @@ -65,7 +65,7 @@ func check() { func deal() { for true { //不需要加锁,注意,阻塞。 - strs, err := redisCli.GetRedis().BLPop(context.Background(), time.Second, micInfoChange).Result() + strs, err := redisCli.GetRedisCluster().BLPop(context.Background(), time.Second, micInfoChange).Result() if err != nil { if err != redis.Nil { mylogrus.MyLog.Errorf("cron micChangeSys redisCli.GetRedis().BLPop err:+%v", err) @@ -127,7 +127,7 @@ func SendSignalMsg(groupId string, msg GroupSystemMsg) { if err = tencentyun.SendSystemMsg(logger, groupId, []string{}, str); err != nil { mylogrus.MyLog.Errorf("cron micChangeSys SendSignalMsg sync failed for %s, msgId = %d, content:%v, err:%+v", groupId, msg.MsgId, str, err) - content := fmt.Sprintf("腾讯云推送失败,content:%v,err:%v", str, err.Error()) + content := fmt.Sprintf("腾讯云推送失败,group:%v,msgId:%v,err:%v", groupId, msg.MsgId, err.Error()) if err := dingding.SendDingRobot(dingding.ROBOTWEBHOOK, content, true); err != nil { mylogrus.MyLog.Errorf("cron micChangeSys SendSignalMsg send dingding fail%s", err.Error()) } diff --git a/release.ini b/release.ini index 5897408..0b67f89 100644 --- 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