|
|
@@ -1,8 +1,12 @@
|
|
|
package model
|
|
|
|
|
|
import (
|
|
|
+ "encoding/base64"
|
|
|
+ "errors"
|
|
|
"fmt"
|
|
|
+ "github.com/go-redis/redis"
|
|
|
"os"
|
|
|
+ "rocommon"
|
|
|
"rocommon/service"
|
|
|
"rocommon/util"
|
|
|
"roserver/baseserver/model"
|
|
|
@@ -33,15 +37,15 @@ func ConvertOldRedis() {
|
|
|
}
|
|
|
|
|
|
//加载活动配置表,查看哪些活动类型是开服时间活动
|
|
|
- //path := "./config/csv/"
|
|
|
+ path := "./config/csv/"
|
|
|
//
|
|
|
- //serverproto.ItemCfgLoad(path)
|
|
|
- //serverproto.ActivitiesCfgLoad(path)
|
|
|
- //serverproto.GlobalCfgLoad(path)
|
|
|
- //serverproto.RuneShopGiftsCfgLoad(path)
|
|
|
- //serverproto.GuildBossCfgLoad(path)
|
|
|
- //model.ConvertOldRedisGlobalCfg()
|
|
|
- //model.ConvertOldRedisRuneCfg()
|
|
|
+ serverproto.ItemCfgLoad(path)
|
|
|
+ serverproto.ActivitiesCfgLoad(path)
|
|
|
+ serverproto.GlobalCfgLoad(path)
|
|
|
+ serverproto.RuneShopGiftsCfgLoad(path)
|
|
|
+ serverproto.GuildBossCfgLoad(path)
|
|
|
+ model.ConvertOldRedisGlobalCfg()
|
|
|
+ model.ConvertOldRedisRuneCfg()
|
|
|
//for _, cfgData := range serverproto.ActivitiesCfgLoader {
|
|
|
// startDataList := strings.Split(cfgData.StartTime, ";")
|
|
|
// endDataList := strings.Split(cfgData.EndTime, ";")
|
|
|
@@ -112,7 +116,7 @@ func ConvertOldRedis() {
|
|
|
}
|
|
|
|
|
|
// 3) 仅目标库执行一次持久化
|
|
|
- convertOldRedis(tmpIpStr, targetDB, true, true)
|
|
|
+ //convertOldRedis(tmpIpStr, targetDB, true, true)
|
|
|
util.InfoF("persist finish target db=%v", targetDB)
|
|
|
return
|
|
|
}
|
|
|
@@ -235,10 +239,10 @@ func convertOldRedis(redisIpStr string, dbIndex int, lastOne bool, persistOnly b
|
|
|
|
|
|
////2.导入数据到新redis数据库中
|
|
|
//开启aof
|
|
|
- service.GetRedis().ConfigSet("appendonly", "yes")
|
|
|
- //service.GetRedis().ConfigSet("aof-use-rdb-preamble", "no")
|
|
|
- service.GetRedis().BgSave()
|
|
|
- service.GetRedis().BgRewriteAOF()
|
|
|
+ //service.GetRedis().ConfigSet("appendonly", "yes")
|
|
|
+ ////service.GetRedis().ConfigSet("aof-use-rdb-preamble", "no")
|
|
|
+ //service.GetRedis().BgSave()
|
|
|
+ //service.GetRedis().BgRewriteAOF()
|
|
|
}
|
|
|
|
|
|
func getUidListFromRedis() []uint64 {
|
|
|
@@ -868,8 +872,59 @@ func mergeDbIntoFirst(redisIpStr string, sourceDB int, targetDB int) error {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
+ keyStr := "guild:recommendindex"
|
|
|
for idx := 0; idx < len(keys); idx++ {
|
|
|
key := keys[idx]
|
|
|
+ //特殊公会列表数据处理
|
|
|
+ if key == keyStr {
|
|
|
+ //源区服工会列表
|
|
|
+ ret, err := src.Get(keyStr).Result()
|
|
|
+ if err != nil {
|
|
|
+ if errors.Is(err, redis.Nil) {
|
|
|
+ util.InfoF("key(%v) not exist in SrcDB, will copy directly", keyStr)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ util.InfoF("LoadRecommendGuild get guildId key=%v err=%v\n", keyStr, err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if ret == "" {
|
|
|
+ util.InfoF("key(%v)->val empty", keyStr)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ str, err := base64.StdEncoding.DecodeString(ret)
|
|
|
+ if err != nil {
|
|
|
+ util.InfoF("key(%v)->val DecodeString error", keyStr)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ recommend := &serverproto.RecommendSet{}
|
|
|
+ _ = rocommon.GetCodec().Unmarshal(str, recommend)
|
|
|
+ //目标区服工会列表
|
|
|
+ ret2, err := dst.Get(keyStr).Result()
|
|
|
+ if err != nil {
|
|
|
+ util.InfoF("LoadRecommendGuild get guildId key=%v err=%v\n", keyStr, err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if ret2 == "" {
|
|
|
+ util.InfoF("key(%v)->val empty", keyStr)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ str2, err := base64.StdEncoding.DecodeString(ret2)
|
|
|
+ if err != nil {
|
|
|
+ util.InfoF("key(%v)->val DecodeString error", keyStr)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ recommend2 := &serverproto.RecommendSet{}
|
|
|
+ _ = rocommon.GetCodec().Unmarshal(str2, recommend2)
|
|
|
+ recommend2.Guild = append(recommend2.Guild, recommend.Guild...)
|
|
|
+ _, ss := model.GetEncodeMessage(recommend2)
|
|
|
+ if e := dst.Set(keyStr, ss, 0).Err(); e != nil {
|
|
|
+ util.ErrorF("key(%v)->val set error =%v", keyStr, e)
|
|
|
+ return e
|
|
|
+ }
|
|
|
+ continue
|
|
|
+ }
|
|
|
|
|
|
srcType, err := src.Type(key).Result()
|
|
|
if err != nil {
|
|
|
@@ -945,17 +1000,17 @@ func mergeDbIntoFirst(redisIpStr string, sourceDB int, targetDB int) error {
|
|
|
}
|
|
|
}
|
|
|
default:
|
|
|
- dumpData := src.Dump(key).String()
|
|
|
- //if e != nil {
|
|
|
- // util.ErrorF("dump err sourceDB=%v key=%v err=%v", sourceDB, key, e)
|
|
|
- // continue
|
|
|
- //}
|
|
|
- restoreTTL := time.Duration(0)
|
|
|
- if srcTTL > 0 {
|
|
|
- restoreTTL = time.Duration(srcTTL) * time.Millisecond
|
|
|
- }
|
|
|
- if e := dst.RestoreReplace(key, restoreTTL, dumpData).Err(); e != nil {
|
|
|
- util.ErrorF("restore err sourceDB=%v targetDB=%v key=%v err=%v", sourceDB, targetDB, key, e)
|
|
|
+ if srcType == "string" {
|
|
|
+ val, e := src.Get(key).Result()
|
|
|
+ if e != nil {
|
|
|
+ util.ErrorF("get err sourceDB=%v key=%v err=%v", sourceDB, key, e)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if e = dst.Set(key, val, 0).Err(); e != nil {
|
|
|
+ util.ErrorF("set err targetDB=%v key=%v err=%v", targetDB, key, e)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ util.ErrorF("set err targetDB=%v key=%v type unkowne", targetDB, key)
|
|
|
}
|
|
|
}
|
|
|
|