0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GaussDB(for Redis) 游戏实践:玩家下线行为上报

jf_94205927 来源:jf_94205927 作者:jf_94205927 2024-03-28 22:03 次阅读

为保护未成年人的身心健康,2007 年国家推出网络游戏防沉迷系统,对未成年人的游戏时间进行限制,游戏厂家需要及时感知用户的下线时间并上报。Redis 是游戏数据库重要选型之一,在基于开源 Redis 实现以上功能时,感知用户下线行为延迟较大,导致上报时间不准确。华为云 GaussDB(for Redis)作为一款企业级游戏数据库,具备卓越的企业级能力,能及时上报用户下线行为,并被广泛应用于排行榜等多种业务场景。

基于 Redis 的用户下线上报实现

实现用户下线上报能力的常见方式

游戏厂商使用 Redis key 过期功能,结合键空间通知功能(keyspace notification),可以实现用户下线上报,常见使用方式如下:

(1)用户登录后,为每一个用户 key 设置一个过期时间(3-5 分钟);

(2)游戏客户端,定期每分钟上报一次心跳,收到心跳后,服务端重置游戏用户 key 的过期时间;

(3)为避免网络波动造成的未及时上报,若 5 分钟内,收到心跳,则重置过期时间;若未收到,将触发 key 过期,系统判定用户下线。

因此,Redis 键空间通知功能要及时感知 key 过期,以确保上报时间的准确性。

Redis 键空间通知功能

Redis 键空间通知,允许用户通过订阅频道或模式,以接收 key 的修改、过期等通知。对于每个 key 的修改,键空间通知都会发送两种不同类型的事件。以 DB0 用户 mykey 过期为例,Redis 会发送两条消息,相当于执行了两个 publish 命令:

PUBLISH__keyspace@0__:mykeyexpire

复制代码

通过订阅频道__keyspace@0__:mykey 可以接收0号数据库中所有修改键 mykey 的事件, 而订阅频道__keyevent@0__:expire 则可以接收0号数据库中所有执行 expire 命令的键。其中以 keyspace 为前缀的频道被称为键空间通知,而以 keyevent 为前缀的频道则被称为键事件通知。

可以通过命令 CONFIG SET notify-keyspace-events [parameter]来开启或者关闭键空间通知功能,若 parameter 为空则表示关闭该功能,若不空则开启。通常将参数设置为“AKE”,表示发送所有类型通知。

通过以下命令,可以订阅 DB0 所有过期的用户 key。

redis-cli--csvpsubscribe'__keyevent@0__:expire'

复制代码

GaussDB(for Redis) VS 开源 Redis

过期键空间通知延时对比

Redis 规格:都采用 4GB 的规格

测试步骤

使用 memtier_benchmark 预置 10w 个 key

使用客户端定期 key 过期事件

使用 python 脚本,对其中的 3w 个 key 设置 10s 过期时间

分别在有业务流量和无业务流量场景,统计收到 3w 个 key 过期的通知耗时

测试结果:

可以看出,在有无业务流量场景下,GaussDB(for Redis)仅需 9 秒即可完成全部 key 过期的上报,而社区 Redis 需要 4 分钟左右才能完成上报,严重影响用户下线行为上报的准确性。

原理分析

开源 Redis 键空间通知功能采用了惰性删除和定期删除两种策略,即在访问时进行过期检查,同时后台以一定频率执行定期检查任务,可以通过修改配置文件 redis.conf 的 hz 选项来调整这个频率。每次过期任务会按以下流程进行删除操作:

1. 从设置了过期时间的 key 的集合中随机检查 20 个 key;

2. 删除检查中发现的所有过期 key;

3. 如果检查结果中 25%以上的 key 已过期,则开始新一轮任务。

可以注意到,开源 Redis 并不是一次运行就检查所有的库中所有的键,而是随机检查一定数量的键,从而导致上报延时长。而 GaussDB(for Redis)后台有一个实时线程会对 key 进行持续扫描,及时上报过期 key,也不会影响前台写操作。

GaussDB(for Redis)是一款超越开源 Redis 的企业级 KV 数据库,在游戏场景中,除了被应用在游戏玩家下线场景,还被广泛应用在玩家数据存储、排行榜、好友关系、消息推送等场景。其采用存算分离的架构,既能满足游戏业务对高并发的性能指标要求,又能降本增效,深受游戏开发者的青睐。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    3335

    浏览量

    42483
  • Redis
    +关注

    关注

    0

    文章

    374

    浏览量

    10872
收藏 人收藏

    评论

    相关推荐

    Redis缓存与Memcached的比较

    Redis和Memcached都是广泛使用的内存数据存储系统,它们主要用于提高应用程序的性能,通过减少对数据库的直接访问来加速数据检索。以下是对Redis和Memcached的比较,涵盖了它们的一些
    的头像 发表于 12-18 09:33 123次阅读

    ChatGPT 在游戏开发中的创新应用

    、流畅的对话。在角色扮演游戏(RPG)或冒险游戏中,这可以用于创建动态对话系统。传统的游戏对话系统通常是预设的,玩家的选择有限,而ChatGPT可以生成更多样化的对话,让每个
    的头像 发表于 10-25 18:05 625次阅读

    基于 FPGA 的飞机大战游戏系统设计

    游戏四个选项。开始游戏后,玩家可以用游戏手柄方便的控制飞机在屏幕上向任意方向移动,通过躲避子弹和射击敌机得分,在屏幕左上角可以看到当前生命和得分。 1.2 应用领域最近的一些复古
    发表于 07-24 20:03

    亚马逊云科技助力所思科技打造爆款游戏《猛兽派对》 保障全球百万玩家在线畅玩

    Animals》(中文名称《猛兽派对》)。亚马逊云科技的技术与解决方案帮助所思科技大幅提高了运维效率、降低了成本,并优化了《猛兽派对》游戏匹配机制,极大提升了玩家游戏体验。《猛兽派对》在全球范围内集结了来自美国、欧洲、亚洲、南
    发表于 05-13 13:48 163次阅读
    亚马逊云科技助力所思科技打造爆款<b class='flag-5'>游戏</b>《猛兽派对》 保障全球百万<b class='flag-5'>玩家</b>在线畅玩

    MediaTek与望尘科技共同推动移动光追技术普及,为游戏玩家带来沉浸式体验

    近期,MediaTek与望尘科技(GALA Sports)宣布合作,共同实现了移动端光线追踪技术在手游领域的落地应用。双方成功将光追技术导入望尘科技旗下的钓鱼和篮球体育在线类游戏中,为玩家带来更加
    的头像 发表于 04-17 14:45 447次阅读
    MediaTek与望尘科技共同推动移动光追技术普及,为<b class='flag-5'>游戏</b><b class='flag-5'>玩家</b>带来沉浸式体验

    Redis开源版与Redis企业版,怎么选用?

    点击“蓝字”关注我们数以千计的企业和数以百万计的开发人员Redis开源版来构建应用程序。但随着用户数量、数据量和地区性的增加,成本、可扩展性、运营和可用性等问题也随之而来。Redis企业版
    的头像 发表于 04-04 08:04 1064次阅读
    <b class='flag-5'>Redis</b>开源版与<b class='flag-5'>Redis</b>企业版,怎么选用?

    赛车游戏还能这么玩?看移远如何赋能远程现实赛车游戏新体验

    你喜欢玩赛车游戏吗?赛车游戏作为一种竞技类游戏,不仅能带来虚拟世界的“速度与激情”,更能在游戏中宣泄情绪、释放压力,深受年轻玩家的青睐。  
    发表于 04-03 14:51 313次阅读
    赛车<b class='flag-5'>游戏</b>还能这么玩?看移远如何赋能远程现实赛车<b class='flag-5'>游戏</b>新体验

    数据安全没保障?GaussDB(for Redis) 为你保驾护航

    未知的 key,实际上可能面临数据库信息丢失和记录篡改的风险。 作为一个重视技术的团队,我们始终将用户信息安全和使用体验放在第一位。对于这次用户使用开源 Redis 遇到的问题,我们盘点了 GaussDB(for Redis)精
    的头像 发表于 03-28 22:09 673次阅读
    数据安全没保障?<b class='flag-5'>GaussDB</b>(for <b class='flag-5'>Redis</b>) 为你保驾护航

    GaussDB(for Redis) 特性揭秘:多租户管理

    华为云 GaussDB(for Redis)持续完善企业级增强特性,是名副其实的 "Redis Plus" ,其中很经典的企业级特性是 多租户能力 ,支持添加只读账号、读写账号,且具备强大的 DB
    的头像 发表于 03-28 22:06 743次阅读
    <b class='flag-5'>GaussDB</b>(for <b class='flag-5'>Redis</b>) 特性揭秘:多租户管理

    GaussDB(for Redis) 特性揭秘:大 key 治理

    运行过程中悄悄产生的,让人防不胜防。因此,一款可随时在线诊断,且能主动预警,防患于未然的 Redis 服务产品显得尤为重要。   作为由华为云精心打造的企业级 RedisGaussDB
    的头像 发表于 03-28 22:06 666次阅读
    <b class='flag-5'>GaussDB</b>(for <b class='flag-5'>Redis</b>) 特性揭秘:大 key 治理

    新版 Redis 不再“开源”,对使用者都有哪些影响?

    2024 年 3 月 20 日,Redis Labs 宣布从 Redis 7.4 开始,将原先比较宽松的 BSD 源码使用协议修改为 RSAv2和 SSPLv1协议。该变化意味着 Redis
    的头像 发表于 03-27 22:30 490次阅读
    新版 <b class='flag-5'>Redis</b> 不再“开源”,对使用者都有哪些影响?

    Redis官方搜索引擎来了,性能炸裂!

    RediSearch 是一个 Redis 模块,为 Redis 提供查询、二级索引和全文搜索功能。
    的头像 发表于 02-21 10:01 2344次阅读
    <b class='flag-5'>Redis</b>官方搜索引擎来了,性能炸裂!

    华为推出定制游戏手柄专利,满足玩家多样化需求

    据悉,华为的此项专利旨在灵活满足玩家对专属定制手柄的需求,允许用户自主组装、拆卸和重新配置控制器各部分,从而创造符合游戏特定场景及个人喜好的独特武器。
    的头像 发表于 01-31 16:56 862次阅读
    华为推出定制<b class='flag-5'>游戏</b>手柄专利,满足<b class='flag-5'>玩家</b>多样化需求

    5G时代的云游戏:如何留住玩家

    导读 云游戏被视为一种具有变革性的技术,但其广泛采用的过程却并非一帆风顺。本文节选了爱立信消费者实验室资深研究员Peter Rinderud对云游戏用户旅程的研究与探讨——包括潜在玩家的流失原因
    的头像 发表于 01-25 11:24 1.3w次阅读
    5G时代的云<b class='flag-5'>游戏</b>:如何留住<b class='flag-5'>玩家</b>?

    linux下Redis常用命令使用

    redis重启,缓存数据还在,redis清缓存数据
    的头像 发表于 12-27 09:56 6573次阅读
    linux下<b class='flag-5'>Redis</b>常用命令使用