1:个人邮件

一个邮件表(msg)

一个附件表(msg_attachment)

邮件中got字段表示客户端有没有拉取这封邮件。。

附件中got字段表示 当前奖励有没有被领取。。。

用户个人信息表中 用一个字段mail_receiveidx记录客户端已经拉取的最后一封邮件的id

客户端登陆后,定时请求邮件,把mail_receiveidx发送给客户端,客户端来拉取邮件时,把mail_receiveidx发送给服务器,由于第一次请求邮件信息时,服务器缓存中并没有当前uid的邮件信息,服务器去数据库检索mailid > mail_receiveidx 的邮件,sql上最好加上限制条数  例如 limit 10。。。。服务器把检索的结果发给客户端,并且把mail_receivedidx 修改成最新的值。。根据检索的结果,如果条数<10  表示数据库中已经没有新的邮件了,此时可以把玩家的邮件信息加入缓存。。如果条数>10  不加入缓存

再次拉取邮件时,就要检查缓存以及比较缓存中的msgid 和 mail_receivedidx ,如果有缓存且id相等就是说明 没有新邮件了,否则的话就把缓存清了 去数据库检索

系统给玩家发邮件时,先存mysql  然后通知玩家,如果玩家在线并且有缓存那就直接发送给玩家,更新msgid,否则的话  清空缓存  直接等客户端来拉

2:全服邮件

全服邮件表sys_msg   跟个人邮件表 类似  可以根据实际需求添加字段  如过期时间等等。。。。

用户个人信息表中 用一个字段sys_mail_receiveidx记录客户端已经存的最后一封全服邮件的id

客户端登陆时,服务器会去检查玩家有没有合格的全服邮件,如果有就向msg表以及 msg_attachment表中插入数据,同时更新sys_mail_receiveidx

 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐