重构玩家缓存数据

This commit is contained in:
hahwu 2026-04-20 11:31:25 +08:00
parent a59fd1357b
commit e87cdec240

View File

@ -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 {