91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

GaussDB(for Redis) 游戲?qū)嵺`:玩家下線(xiàn)行為上報(bào)

jf_94205927 ? 來(lái)源:jf_94205927 ? 作者:jf_94205927 ? 2024-03-28 22:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

為保護(hù)未成年人的身心健康,2007 年國(guó)家推出網(wǎng)絡(luò)游戲防沉迷系統(tǒng),對(duì)未成年人的游戲時(shí)間進(jìn)行限制,游戲廠(chǎng)家需要及時(shí)感知用戶(hù)的下線(xiàn)時(shí)間并上報(bào)。Redis 是游戲數(shù)據(jù)庫(kù)重要選型之一,在基于開(kāi)源 Redis 實(shí)現(xiàn)以上功能時(shí),感知用戶(hù)下線(xiàn)行為延遲較大,導(dǎo)致上報(bào)時(shí)間不準(zhǔn)確。華為云 GaussDB(for Redis)作為一款企業(yè)級(jí)游戲數(shù)據(jù)庫(kù),具備卓越的企業(yè)級(jí)能力,能及時(shí)上報(bào)用戶(hù)下線(xiàn)行為,并被廣泛應(yīng)用于排行榜等多種業(yè)務(wù)場(chǎng)景。

基于 Redis 的用戶(hù)下線(xiàn)上報(bào)實(shí)現(xiàn)

實(shí)現(xiàn)用戶(hù)下線(xiàn)上報(bào)能力的常見(jiàn)方式

游戲廠(chǎng)商使用 Redis key 過(guò)期功能,結(jié)合鍵空間通知功能(keyspace notification),可以實(shí)現(xiàn)用戶(hù)下線(xiàn)上報(bào),常見(jiàn)使用方式如下:

(1)用戶(hù)登錄后,為每一個(gè)用戶(hù) key 設(shè)置一個(gè)過(guò)期時(shí)間(3-5 分鐘);

(2)游戲客戶(hù)端,定期每分鐘上報(bào)一次心跳,收到心跳后,服務(wù)端重置游戲用戶(hù) key 的過(guò)期時(shí)間;

(3)為避免網(wǎng)絡(luò)波動(dòng)造成的未及時(shí)上報(bào),若 5 分鐘內(nèi),收到心跳,則重置過(guò)期時(shí)間;若未收到,將觸發(fā) key 過(guò)期,系統(tǒng)判定用戶(hù)下線(xiàn)。

因此,Redis 鍵空間通知功能要及時(shí)感知 key 過(guò)期,以確保上報(bào)時(shí)間的準(zhǔn)確性。

Redis 鍵空間通知功能

Redis 鍵空間通知,允許用戶(hù)通過(guò)訂閱頻道或模式,以接收 key 的修改、過(guò)期等通知。對(duì)于每個(gè) key 的修改,鍵空間通知都會(huì)發(fā)送兩種不同類(lèi)型的事件。以 DB0 用戶(hù) mykey 過(guò)期為例,Redis 會(huì)發(fā)送兩條消息,相當(dāng)于執(zhí)行了兩個(gè) publish 命令:

PUBLISH__keyspace@0__:mykeyexpire

復(fù)制代碼

通過(guò)訂閱頻道__keyspace@0__:mykey 可以接收0號(hào)數(shù)據(jù)庫(kù)中所有修改鍵 mykey 的事件, 而訂閱頻道__keyevent@0__:expire 則可以接收0號(hào)數(shù)據(jù)庫(kù)中所有執(zhí)行 expire 命令的鍵。其中以 keyspace 為前綴的頻道被稱(chēng)為鍵空間通知,而以 keyevent 為前綴的頻道則被稱(chēng)為鍵事件通知。

可以通過(guò)命令 CONFIG SET notify-keyspace-events [parameter]來(lái)開(kāi)啟或者關(guān)閉鍵空間通知功能,若 parameter 為空則表示關(guān)閉該功能,若不空則開(kāi)啟。通常將參數(shù)設(shè)置為“AKE”,表示發(fā)送所有類(lèi)型通知。

通過(guò)以下命令,可以訂閱 DB0 所有過(guò)期的用戶(hù) key。

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

復(fù)制代碼

GaussDB(for Redis) VS 開(kāi)源 Redis

過(guò)期鍵空間通知延時(shí)對(duì)比

Redis 規(guī)格:都采用 4GB 的規(guī)格

測(cè)試步驟

使用 memtier_benchmark 預(yù)置 10w 個(gè) key

使用客戶(hù)端定期 key 過(guò)期事件

使用 python 腳本,對(duì)其中的 3w 個(gè) key 設(shè)置 10s 過(guò)期時(shí)間

分別在有業(yè)務(wù)流量和無(wú)業(yè)務(wù)流量場(chǎng)景,統(tǒng)計(jì)收到 3w 個(gè) key 過(guò)期的通知耗時(shí)

測(cè)試結(jié)果:

可以看出,在有無(wú)業(yè)務(wù)流量場(chǎng)景下,GaussDB(for Redis)僅需 9 秒即可完成全部 key 過(guò)期的上報(bào),而社區(qū) Redis 需要 4 分鐘左右才能完成上報(bào),嚴(yán)重影響用戶(hù)下線(xiàn)行為上報(bào)的準(zhǔn)確性。

原理分析

開(kāi)源 Redis 鍵空間通知功能采用了惰性刪除和定期刪除兩種策略,即在訪(fǎng)問(wèn)時(shí)進(jìn)行過(guò)期檢查,同時(shí)后臺(tái)以一定頻率執(zhí)行定期檢查任務(wù),可以通過(guò)修改配置文件 redis.conf 的 hz 選項(xiàng)來(lái)調(diào)整這個(gè)頻率。每次過(guò)期任務(wù)會(huì)按以下流程進(jìn)行刪除操作:

1. 從設(shè)置了過(guò)期時(shí)間的 key 的集合中隨機(jī)檢查 20 個(gè) key;

2. 刪除檢查中發(fā)現(xiàn)的所有過(guò)期 key;

3. 如果檢查結(jié)果中 25%以上的 key 已過(guò)期,則開(kāi)始新一輪任務(wù)。

可以注意到,開(kāi)源 Redis 并不是一次運(yùn)行就檢查所有的庫(kù)中所有的鍵,而是隨機(jī)檢查一定數(shù)量的鍵,從而導(dǎo)致上報(bào)延時(shí)長(zhǎng)。而 GaussDB(for Redis)后臺(tái)有一個(gè)實(shí)時(shí)線(xiàn)程會(huì)對(duì) key 進(jìn)行持續(xù)掃描,及時(shí)上報(bào)過(guò)期 key,也不會(huì)影響前臺(tái)寫(xiě)操作。

GaussDB(for Redis)是一款超越開(kāi)源 Redis 的企業(yè)級(jí) KV 數(shù)據(jù)庫(kù),在游戲場(chǎng)景中,除了被應(yīng)用在游戲玩家下線(xiàn)場(chǎng)景,還被廣泛應(yīng)用在玩家數(shù)據(jù)存儲(chǔ)、排行榜、好友關(guān)系、消息推送等場(chǎng)景。其采用存算分離的架構(gòu),既能滿(mǎn)足游戲業(yè)務(wù)對(duì)高并發(fā)的性能指標(biāo)要求,又能降本增效,深受游戲開(kāi)發(fā)者的青睞。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    4204

    瀏覽量

    46130
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    392

    瀏覽量

    12185
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Redis哨兵模式的自動(dòng)故障檢測(cè)與主從切換實(shí)戰(zhàn)

    Redis 主從復(fù)制解決了讀擴(kuò)展和數(shù)據(jù)冗余問(wèn)題,但主節(jié)點(diǎn)故障時(shí)需要人工介入切換,這在生產(chǎn)環(huán)境中是不可接受的。Sentinel(哨兵)模式在主從架構(gòu)之上增加了自動(dòng)故障檢測(cè)和故障轉(zhuǎn)移能力,是 Redis 高可用的標(biāo)準(zhǔn)方案之一。
    的頭像 發(fā)表于 02-27 11:05 ?122次閱讀

    MediaTek與異環(huán)游戲達(dá)成深度合作

    為了給全球玩家帶來(lái)更流暢、更節(jié)能的游戲體驗(yàn),MediaTek與《異環(huán)》達(dá)成深度合作,雙方團(tuán)隊(duì)基于天璣星速引擎的倍幀技術(shù)(MediaTek Frame Rate Converter,簡(jiǎn)稱(chēng)MFRC)為全球玩家帶來(lái)畫(huà)面更流暢、續(xù)航更持
    的頭像 發(fā)表于 01-27 09:20 ?460次閱讀

    【技術(shù)貼】手柄芯片重新定義次世代交互體驗(yàn),玩家:這物理外掛太逆天!

    隨著游戲設(shè)備的升級(jí),游戲手柄作為核心交互設(shè)備持續(xù)技術(shù)革新。在主機(jī)游戲中,高精度操作適配動(dòng)作格斗、模擬駕駛等多種游戲類(lèi)型,顯著提升玩家沉浸感。
    的頭像 發(fā)表于 08-11 15:30 ?1003次閱讀
    【技術(shù)貼】手柄芯片重新定義次世代交互體驗(yàn),<b class='flag-5'>玩家</b>:這物理外掛太逆天!

    【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】2、打造復(fù)古游戲機(jī)(Batocera鏡像+FBNeo虛擬機(jī), 多款游戲ROM分享)

    模擬器(Emulators) 而設(shè)計(jì)的 Linux 發(fā)行版,它們主要運(yùn)行在樹(shù)莓派、舊電腦、安卓盒子、電視棒等低功耗設(shè)備上,方便玩家用來(lái)玩 NES、SNES、PS1、N64、街機(jī)等老游戲。 下面是四大主流
    發(fā)表于 07-17 21:58

    Redis集群部署配置詳解

    Redis集群是一種分布式Redis解決方案,通過(guò)數(shù)據(jù)分片和主從復(fù)制實(shí)現(xiàn)高可用性和橫向擴(kuò)展。集群將整個(gè)數(shù)據(jù)集分割成16384個(gè)哈希槽(hash slots),每個(gè)節(jié)點(diǎn)負(fù)責(zé)一部分槽位。
    的頭像 發(fā)表于 07-17 11:04 ?979次閱讀

    Redis集群部署與性能優(yōu)化實(shí)戰(zhàn)

    Redis作為高性能的內(nèi)存數(shù)據(jù)庫(kù),在現(xiàn)代互聯(lián)網(wǎng)架構(gòu)中扮演著關(guān)鍵角色。作為運(yùn)維工程師,掌握Redis的部署、配置和優(yōu)化技能至關(guān)重要。本文將從實(shí)戰(zhàn)角度出發(fā),詳細(xì)介紹Redis集群的搭建、性能優(yōu)化以及監(jiān)控運(yùn)維的核心技術(shù)。
    的頭像 發(fā)表于 07-08 17:56 ?850次閱讀

    游戲玩家的聽(tīng)覺(jué)革命!這款虛擬 7.1 游戲聲卡評(píng)估板讓你 “聲” 臨其境!

    在激烈的游戲對(duì)戰(zhàn)中,你是否曾因聽(tīng)不清敵人腳步聲而被偷襲?又是否在與隊(duì)友溝通時(shí),被鍵盤(pán)敲擊聲、鼠標(biāo)點(diǎn)擊聲等雜音干擾,導(dǎo)致交流不暢?別擔(dān)心,A316-V71-Game-V1虛擬7.1游戲聲卡評(píng)估板強(qiáng)勢(shì)
    的頭像 發(fā)表于 07-05 15:35 ?1120次閱讀
    <b class='flag-5'>游戲</b><b class='flag-5'>玩家</b>的聽(tīng)覺(jué)革命!這款虛擬 7.1 <b class='flag-5'>游戲</b>聲卡評(píng)估板讓你 “聲” 臨其境!

    C#上位機(jī)與運(yùn)動(dòng)控制卡網(wǎng)絡(luò)通訊的周期上報(bào)

    使用C#上位機(jī)編程實(shí)現(xiàn)運(yùn)動(dòng)控制卡網(wǎng)絡(luò)通訊的周期上報(bào)功能
    的頭像 發(fā)表于 06-26 13:59 ?827次閱讀
    C#上位機(jī)與運(yùn)動(dòng)控制卡網(wǎng)絡(luò)通訊的周期<b class='flag-5'>上報(bào)</b>

    【經(jīng)驗(yàn)分享】在Omni3576上編譯Redis-8.0.2源碼,并安裝及性能測(cè)試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576上編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在Omni3576上運(yùn)行Redis性能測(cè)試,并
    的頭像 發(fā)表于 06-05 08:05 ?977次閱讀
    【經(jīng)驗(yàn)分享】在Omni3576上編譯<b class='flag-5'>Redis</b>-8.0.2源碼,并安裝及性能測(cè)試

    【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】Redis最新8.0.2版本源碼安裝及性能測(cè)試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576上編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在Omni3576上運(yùn)行Redis性能測(cè)試,并
    發(fā)表于 06-03 01:28

    游戲手柄振動(dòng)馬達(dá):沉浸式游戲體驗(yàn)的核心

    游戲手柄振動(dòng)馬達(dá)是現(xiàn)代游戲設(shè)備中不可或缺的一部分,它為玩家提供了更加沉浸式的游戲體驗(yàn)。通過(guò)精確的振動(dòng)反饋,游戲手柄振動(dòng)馬達(dá)能夠?qū)?/div>
    的頭像 發(fā)表于 05-17 00:05 ?916次閱讀

    Redis 再次開(kāi)源!

    “ ?Redis 現(xiàn)已采用 AGPLv3 開(kāi)源許可證。? ” Redis CEO 的 Blog 以下是 Redis CEO Rowan Trollope 的 Blog: 像 AWS 和 GCP 這樣
    的頭像 發(fā)表于 05-06 18:26 ?928次閱讀

    艾為電子芯片產(chǎn)品在游戲手柄中的應(yīng)用方案

    隨著游戲設(shè)備的升級(jí),游戲手柄作為核心交互設(shè)備持續(xù)技術(shù)革新。在主機(jī)游戲中,高精度操作適配動(dòng)作格斗、模擬駕駛等多種游戲類(lèi)型,顯著提升玩家沉浸感。
    的頭像 發(fā)表于 04-15 09:42 ?1721次閱讀
    艾為電子芯片產(chǎn)品在<b class='flag-5'>游戲</b>手柄中的應(yīng)用方案

    redis三種集群方案詳解

    Redis中提供的集群方案總共有三種(一般一個(gè)redis節(jié)點(diǎn)不超過(guò)10G內(nèi)存)。
    的頭像 發(fā)表于 03-31 10:46 ?1529次閱讀
    <b class='flag-5'>redis</b>三種集群方案詳解

    亞馬遜云科技推出Amazon GameLift Streams助力開(kāi)發(fā)者實(shí)現(xiàn)游戲全平臺(tái)跨設(shè)備串流

    亞馬遜云科技全新功能可助力游戲開(kāi)發(fā)者觸達(dá)全球更多玩家,拓展變現(xiàn)機(jī)會(huì)并提升收入 ? 北京 ——2025 年 3 月 13 日 亞馬遜云科技宣布推出全托管游戲串流解決方案Amazon GameLift
    發(fā)表于 03-13 13:36 ?512次閱讀