mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-11 08:12:31 +08:00
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
"strconv"
|
|
"time"
|
|
|
|
"hk4e/gs/model"
|
|
"hk4e/pkg/logger"
|
|
|
|
"github.com/vmihailenco/msgpack/v5"
|
|
)
|
|
|
|
const RedisPlayerKeyPrefix = "HK4E"
|
|
|
|
func (d *Dao) GetRedisPlayerKey(userId uint32) string {
|
|
return RedisPlayerKeyPrefix + ":USER:" + strconv.Itoa(int(userId))
|
|
}
|
|
|
|
func (d *Dao) GetRedisPlayer(userId uint32) *model.Player {
|
|
playerData, err := d.redis.Get(context.TODO(), d.GetRedisPlayerKey(userId)).Result()
|
|
if err != nil {
|
|
logger.Error("get player from redis error: %v", err)
|
|
return nil
|
|
}
|
|
player := new(model.Player)
|
|
err = msgpack.Unmarshal([]byte(playerData), player)
|
|
if err != nil {
|
|
logger.Error("unmarshal player error: %v", err)
|
|
return nil
|
|
}
|
|
return player
|
|
}
|
|
|
|
func (d *Dao) SetRedisPlayer(player *model.Player) {
|
|
playerData, err := msgpack.Marshal(player)
|
|
if err != nil {
|
|
logger.Error("marshal player error: %v", err)
|
|
return
|
|
}
|
|
err = d.redis.Set(context.TODO(), d.GetRedisPlayerKey(player.PlayerID), playerData, time.Hour*24*30).Err()
|
|
if err != nil {
|
|
logger.Error("set player from redis error: %v", err)
|
|
return
|
|
}
|
|
}
|
|
|
|
func (d *Dao) SetRedisPlayerList(playerList []*model.Player) {
|
|
// TODO 换成redis批量命令执行
|
|
for _, player := range playerList {
|
|
d.SetRedisPlayer(player)
|
|
}
|
|
}
|