skynet简单游戏服务器的迭代1

第一篇
第二篇

在前面两篇的基础框架上引入可供skynet服务间数据共享的库,灵感是之前用Erlang写游戏业务时候,经常会用到ets来存储共享数据。ets表 是 Erlang 提供的一种高效的数据存储机制,可以看作是一个键值存储,其中每个键可以唯一标识一个值,支持快速的访问和修改操作。

skynet本身也有提供了sharetable,sharedata等库可以操作共享数据,但是相比以往用Erlang的ets使用上会复杂一丢丢,当做学习和扩展,就封装一个简单的ets库,提供查询/插入/更新/删除/清表的几种操作,在不同服务间可共享和查询/更新,线程安全。

使用场景:

比如需要保存当前服所有在线玩家信息,每个玩家信息包含玩家id,玩家服务进程addr,登录时间三部分。那就需要一张表名online_users的表来保存信息列表,而保存的信息列表中,key就是玩家id,val则是{id = 玩家id, addr = 玩家服务进程, login_time = 登录时间}

代码示例:

A服务初始化和插入 (初始化只需要任意一个服务初始化一次即可)

local ets = require "db.ets"
--初始化表
ets.init("online_users")
--插入数据
local res = ets.insert("online_users", 玩家id(1001), {
   
   id = 玩家id, addr = 玩家服务进程1, login_time = 登录时间})
assert
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值