golang游戏服务器 - tgf系列课程07
2023-12-14 11:22:01
数据管理
使用数据管理工具,对玩家数据进行自动化的缓存管理.
需求描述
用户登录成功之后,我们需要根据用户的账号,创建用户的数据,并且将数据存放到mysql和redis中.之后我们通过接口,修改玩家的昵称,然后重新登录.观察数据是否准确
准备工作
在开始服务器的代码编程之前,我们需要先创建对应的mysql表.我们需要用到账号,密码,用户id,昵称,还有统一的state数据状态字段(用于标记数据是否被删除)
代码
展示了所需代码和操作
-
Mysql
-
使用
account
和password
做为联合主键,user_id
记录玩家id(除首字母外,遇到大写字母加下划线,所有字母都使用小写)
结构类
-
与mysql对应,字段需要大写,实现
db.IModel
接口
type UserAccount struct {
db.Model //内置State字段,标识用户删除状态
Account string `orm:"pk"` //tag标记该字段为主键
Password string `orm:"pk"`
UserId string
}
func (u *UserAccount) GetTableName() string {
return "t_account"
}
-
数据管理
- 创建初始化数据管理
type Manager struct {
//申明一个key为string类型,值为UserAccount的数据管理
accountCache db.IAutoCacheService[string, *entity.UserAccount]
}
func (m *Manager) InitStruct() {
//初始化一个带持久化缓存的数据管理实例,其中redis的主key为 account
//假如,redis的key设计为"account:admin" 那么这里传入account
m.accountCache = db.NewLongevityAutoCacheManager[string, *entity.UserAccount]("account")
}
-
逻辑修改
- 使用数据管理操作
m.accountCache.Get("admin") //这里可以获取到前面定义的泛型数据, 不需要再进行数据类型转换
m.accountCache.Set(account, "admin") //这里的account为数据实例,admin为唯一key
//一般在创建数据的时候使用
m.accountCache.Push("admin") //这个函数是对数据进行持久化操作,
//会立即执行redis缓存,并且改变数据的状态,
//异步存储到mysql,一般在数据有变动的时候使用
总结
总体来说,数据管理的使用十分简单. 只需要构建数据结构,遵循结构规范,之后实例化管理工具,
就可以直接使用了.除了提供持久化结构数据以外,我们还提供自定义缓存机制的管理器,
也就是说,所有的数据都可以使用这个工具管理他们的本地缓存和生命周期.
后续也会根据需求,不断的拓展和优化.
tgf系列基础课程到这里就结束了. 后续大家可以关注我的b站信息. 不定期的直播slg游戏开发.
有任何使用的问题和疑惑建议,都可以在github上提issues,或者加入qq群联系我.开源不易,共同努力.
交流群
QQ群:7400585
视频教程
golang游戏服务器 - tgf系列课程07
B站教程合集
项目地址
文章来源:https://blog.csdn.net/thkhxm/article/details/134987462
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!