文档章节

游戏服务器-自增长ID

l
 leekay
发布于 2016/06/24 16:44
字数 283
阅读 13
收藏 0

    使用Redis作为玩家数据库,有个尖锐的问题就是玩家获得多件装备时唯一ID的生成。这个时候很多同学都已经想到IncrBy,没错首先根据获得的装备数量计算最大ID,再分别用于新装备数据使用。

//玩家ID
$puid = 1;
//获取装备背包
$equip_pack = $equip_class->getEquipPackByPuid($puid);
//玩家获得的三件装备配置ID
$equip_keys = array(1001,1002,1003);
//自增长ID增加值
$num = count($equip_keys);
//增加后的ID最大值
$max_id = $this->_redis->getUserRedis($puid)->incrBy(Redis_Pfx_EquipIndex . $puid, $num);
//循环加入装备
foreach($equip_keys as $key){
  $equip_pack['Hero'][] = $this->getEquipFormat($max_id, $key);//加入装备数据
  $max_id--;//自增长ID减一
}
$result = $equip_class->setEquipPackByPuid($puid,$equip_pack);//存储装备背包

/**
 * 获取装备信息格式
 *
 * @param $id
 * @param $key
 *
 * @return array
 */
private function getEquipFormat($id, $key){
    $info = array(
        'EquipID'        => $id,
        'EquipKey'       => $key,
        'Level'          => 1,
        'RefineExp'      => 0,     //精炼经验
        'RefineLevel'    => 0,     //精炼等级
        'StarExp'        => 0,     //星魂
        'StarLevel'      => 0,     //星级
    );
    return $info;
}

    其中getEquipFormat我们可以看做是装备的表,它统一规范了装备的字段,其他系统也要有类似的函数。

© 著作权归作者所有

共有 人打赏支持
l
粉丝 1
博文 17
码字总数 6436
作品 0
虹口
程序员
私信 提问
棋牌游戏服务器架构: 详细设计(3) 数据库设计

主要有3类Database: ServerInfoDB,UserInfoDB和GameDB。 ServerInfoDB主要存储的是游戏列表的信息,UserInfoDB存储玩家的全局信息,而GameDB就是积分以及积分变化情况。下面分别加以描述。 1....

棋牌游戏服务器托管
2015/11/30
7
0
【上海高薪内推】游戏服务端开发/策划/运营经理

【上海高薪内推】游戏服务端开发/策划/运营经理 !上海高薪内推,REQ有限,由于不方便公开公司邮箱(你们懂得),请将简历发送至 vincent_luox@126.com 我会帮大家推荐的,谢谢! 公司:日本...

Justin1999
2013/05/25
643
1
谈谈陌陌争霸在数据库方面踩过的坑( Redis 篇)

转载一篇redis的文章,作者遇到的两个问题, 1。redis的BGSAVE机制,fork多个进程,占满内存 2.SYNC机制,定期冷备全部数据,内存不足 注:陌陌争霸的数据库部分我没有参与具体设计,只是参与...

fzxu_05
2014/03/05
0
0
游戏行业“红海”厮杀激烈,云计算成为最重要一步棋

如今的网络游戏市场风生水起,呈现出一片蓬勃发展的势头。2013年第一季度中国网络游戏市场就达到185.9亿元,同比增长21.7%,这让大量的开发者对游戏行业趋之若鹜。 广阔的“钱景”也让游戏行...

二月002
2013/09/24
747
8
游戏服务器中的日志处理方式之一

在游戏开发的过程中,我们需要记录一些日志,以便以后了解游戏运行的情况,以及根据日志发现并处理游戏中的突发情况。 一,游戏日志可以分为以下几种: 1)系统日志 2)用户操作日志 3)异常日志...

shezjl
2015/07/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
46分钟前
1
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
3
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0
手机通过wifi遥控arduino

手机下载Blinker 从Blinker官网下载手机App,安装到手机。 手机连接WiFi。 点击我的设备右上角的"+"添加设备,选择Arduino -> wifi接入,复制密钥以备后续使用。 点击新建的设备,可以在新界...

davidwbnu
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部