From e87cdec2408d1bc5a8ad5fbd43266feaf038ca91 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 20 Apr 2026 11:31:25 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E7=8E=A9=E5=AE=B6=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/var_mgr.go | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/server/game/var_mgr.go b/src/server/game/var_mgr.go index 440be354..ff8be84d 100644 --- a/src/server/game/var_mgr.go +++ b/src/server/game/var_mgr.go @@ -110,6 +110,9 @@ func (f *VarMgr) version() { // future version update f.fixbug() // 修复用户变量冗余数据 f.getData().Version = 2 + case 2: + f.translateToRedis() // 将用户变量迁移到Redis + f.getData().Version = 3 } } @@ -125,6 +128,21 @@ func (f *VarMgr) translateToRedis() { SaveUserVarData(key, v) log.Debug("translateToRedis: uid %d, varData %v", k, v) } + for k, v := range data.NewVar { + if v == nil { + continue + } + SaveCacheVarData(k, v) + log.Debug("translateToRedis: varKey %s, varData %v", k, v) + } + for k, v := range data.DailyVar { + if v == nil { + continue + } + SaveCacheVarData(k, v) + log.Debug("translateToRedis: dailyVarKey %s, varData %v", k, v) + } + data.NewVar = make(map[string]*VarExpireData) data.NewUseVar = make(map[int]map[string]*VarExpireData) } @@ -139,13 +157,6 @@ func (f *VarMgr) ZeroUpdate() { Four: Card1, Five: Card2, }) - for k, v := range data.NewVar { - if v.T < GoUtil.ZeroTimestamp() { - delete(data.NewVar, k) - } - } - // 清空每日变量 - data.DailyVar = make(map[string]*VarExpireData) f.mDispatr.AfterFunc(time.Duration(GoUtil.NextZeroTimestampDuration())*time.Second, func() { f.ZeroUpdate() }) @@ -198,10 +209,10 @@ func (f *VarMgr) GetUserVar(uid int, key string) *VarExpireData { } func (f *VarMgr) SetVar(key string, value interface{}) { - f.getData().NewVar[key] = &VarExpireData{ - D: value, - } - SaveCacheVarData(key, f.getData().NewVar[key]) + data := &VarExpireData{} + LoadCacheVarData(key, data) + data.D = value + SaveCacheVarData(key, data) } func (f *VarMgr) getData() *VarData { @@ -267,8 +278,7 @@ func SetUserVarDataHandler(m *msg.Msg) (interface{}, error) { varData := make(map[string]*VarExpireData) err := LoadUserVarData(GoUtil.GetVarKey(m.To), &varData) if err != nil { - log.Error("SetUserVarDataHandler err : %s, key: %s", err, v.Key) - return nil, fmt.Errorf("failed to load user var data: %v", err) + log.Debug("SetUserVarDataHandler err : %s, key: %s", err, v.Key) } ved := varData[v.Key] if ved == nil {