精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

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

jf_94205927 ? 來源:jf_94205927 ? 作者:jf_94205927 ? 2024-03-28 22:03 ? 次閱讀

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

基于 Redis 的用戶下線上報實現(xiàn)

實現(xiàn)用戶下線上報能力的常見方式

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

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

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

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

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

Redis 鍵空間通知功能

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

PUBLISH__keyspace@0__:mykeyexpire

復(fù)制代碼

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

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

通過以下命令,可以訂閱 DB0 所有過期的用戶 key。

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

復(fù)制代碼

GaussDB(for Redis) VS 開源 Redis

過期鍵空間通知延時對比

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

測試步驟

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

使用客戶端定期 key 過期事件

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

分別在有業(yè)務(wù)流量和無業(yè)務(wù)流量場景,統(tǒng)計收到 3w 個 key 過期的通知耗時

測試結(jié)果:

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

原理分析

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

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

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

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

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

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

審核編輯 黃宇

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

    關(guān)注

    3

    文章

    3256

    瀏覽量

    42420
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    371

    瀏覽量

    10850
收藏 人收藏

    評論

    相關(guān)推薦

    ChatGPT 在游戲開發(fā)中的創(chuàng)新應(yīng)用

    、流暢的對話。在角色扮演游戲(RPG)或冒險游戲中,這可以用于創(chuàng)建動態(tài)對話系統(tǒng)。傳統(tǒng)的游戲對話系統(tǒng)通常是預(yù)設(shè)的,玩家的選擇有限,而ChatGPT可以生成更多樣化的對話,讓每個
    的頭像 發(fā)表于 10-25 18:05 ?569次閱讀

    基于 FPGA 的飛機(jī)大戰(zhàn)游戲系統(tǒng)設(shè)計

    游戲四個選項。開始游戲后,玩家可以用游戲手柄方便的控制飛機(jī)在屏幕上向任意方向移動,通過躲避子彈和射擊敵機(jī)得分,在屏幕左上角可以看到當(dāng)前生命和得分。 1.2 應(yīng)用領(lǐng)域最近的一些復(fù)古
    發(fā)表于 07-24 20:03

    MediaTek與望塵科技共同推動移動光追技術(shù)普及,為游戲玩家帶來沉浸式體驗

    近期,MediaTek與望塵科技(GALA Sports)宣布合作,共同實現(xiàn)了移動端光線追蹤技術(shù)在手游領(lǐng)域的落地應(yīng)用。雙方成功將光追技術(shù)導(dǎo)入望塵科技旗下的釣魚和籃球體育在線類游戲中,為玩家帶來更加
    的頭像 發(fā)表于 04-17 14:45 ?425次閱讀
    MediaTek與望塵科技共同推動移動光追技術(shù)普及,為<b class='flag-5'>游戲</b><b class='flag-5'>玩家</b>帶來沉浸式體驗

    Redis開源版與Redis企業(yè)版,怎么選用?

    點擊“藍(lán)字”關(guān)注我們數(shù)以千計的企業(yè)和數(shù)以百萬計的開發(fā)人員Redis開源版來構(gòu)建應(yīng)用程序。但隨著用戶數(shù)量、數(shù)據(jù)量和地區(qū)性的增加,成本、可擴(kuò)展性、運營和可用性等問題也隨之而來。Redis企業(yè)版
    的頭像 發(fā)表于 04-04 08:04 ?977次閱讀
    <b class='flag-5'>Redis</b>開源版與<b class='flag-5'>Redis</b>企業(yè)版,怎么選用?

    數(shù)據(jù)安全沒保障?GaussDB(for Redis) 為你保駕護(hù)航

    未知的 key,實際上可能面臨數(shù)據(jù)庫信息丟失和記錄篡改的風(fēng)險。 作為一個重視技術(shù)的團(tuán)隊,我們始終將用戶信息安全和使用體驗放在第一位。對于這次用戶使用開源 Redis 遇到的問題,我們盤點了 GaussDB(for Redis)精
    的頭像 發(fā)表于 03-28 22:09 ?647次閱讀
    數(shù)據(jù)安全沒保障?<b class='flag-5'>GaussDB</b>(for <b class='flag-5'>Redis</b>) 為你保駕護(hù)航

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

    華為云 GaussDB(for Redis)持續(xù)完善企業(yè)級增強(qiáng)特性,是名副其實的 "Redis Plus" ,其中很經(jīng)典的企業(yè)級特性是 多租戶能力 ,支持添加只讀賬號、讀寫賬號,且具備強(qiáng)大的 DB
    的頭像 發(fā)表于 03-28 22:06 ?724次閱讀
    <b class='flag-5'>GaussDB</b>(for <b class='flag-5'>Redis</b>) 特性揭秘:多租戶管理

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

    運行過程中悄悄產(chǎn)生的,讓人防不勝防。因此,一款可隨時在線診斷,且能主動預(yù)警,防患于未然的 Redis 服務(wù)產(chǎn)品顯得尤為重要。 ? 作為由華為云精心打造的企業(yè)級 RedisGaussDB
    的頭像 發(fā)表于 03-28 22:06 ?651次閱讀
    <b class='flag-5'>GaussDB</b>(for <b class='flag-5'>Redis</b>) 特性揭秘:大 key 治理

    5G時代的云游戲:如何留住玩家

    導(dǎo)讀 云游戲被視為一種具有變革性的技術(shù),但其廣泛采用的過程卻并非一帆風(fēng)順。本文節(jié)選了愛立信消費者實驗室資深研究員Peter Rinderud對云游戲用戶旅程的研究與探討——包括潛在玩家的流失原因
    的頭像 發(fā)表于 01-25 11:24 ?1.3w次閱讀
    5G時代的云<b class='flag-5'>游戲</b>:如何留住<b class='flag-5'>玩家</b>?

    【飛騰派4G版免費試用】4. Teeworlds 淺談游戲

    其帶回自己的基地。 即時爆頭(Instagib): 玩家只有一個生命點,武器能夠立即擊敗對手。 地圖編輯器: Teeworlds提供了一個內(nèi)置的地圖編輯器,使玩家能夠創(chuàng)建自己的地圖,從而增加了游戲
    發(fā)表于 12-25 19:47

    聊聊Redis的使用案例

    今天我們來聊聊 Redis 的使用案例。
    的頭像 發(fā)表于 12-13 14:13 ?489次閱讀

    redis容器內(nèi)怎么查看redis日志

    redis是一款流行的開源內(nèi)存數(shù)據(jù)庫,常用于緩存、消息隊列、任務(wù)管理等場景。在使用redis時,了解如何查看redis日志對于排查問題、監(jiān)控性能和分析應(yīng)用程序行為非常重要。在本文中,我
    的頭像 發(fā)表于 12-05 10:10 ?3510次閱讀

    redis的lru原理

    Redis是一種基于內(nèi)存的鍵值數(shù)據(jù)庫,它使用了LRU(Least Recently Used)算法來進(jìn)行緩存的數(shù)據(jù)淘汰。LRU算法的核心思想是最近最少使用的數(shù)據(jù)將會在未來也不常用,因此應(yīng)該優(yōu)先
    的頭像 發(fā)表于 12-05 09:56 ?607次閱讀

    redis的原理和使用場景

    Redis(Remote Dictionary Server)是一個開源的、高性能的非關(guān)系型(NoSQL)的鍵值對數(shù)據(jù)庫管理系統(tǒng)。它以其快速讀寫能力和多種數(shù)據(jù)結(jié)構(gòu)支持而聞名,并被廣泛應(yīng)用于緩存
    的頭像 發(fā)表于 12-04 16:29 ?568次閱讀

    redis的淘汰策略

    Redis是一種基于內(nèi)存的鍵值存儲系統(tǒng),為了充分利用內(nèi)存,Redis采用了一些淘汰策略來管理內(nèi)存空間。淘汰策略的作用是當(dāng)內(nèi)存空間不足時,選擇合適的數(shù)據(jù)對象進(jìn)行淘汰,釋放出更多的內(nèi)存空間,以供后續(xù)
    的頭像 發(fā)表于 12-04 16:23 ?523次閱讀

    Java redis鎖怎么實現(xiàn)

    在Java中實現(xiàn)Redis鎖涉及到以下幾個方面:Redis的安裝配置、Redis連接池的使用、Redis數(shù)據(jù)結(jié)構(gòu)的選擇、實現(xiàn)分布式鎖的幾種方式等。 一、
    的頭像 發(fā)表于 12-04 10:47 ?1130次閱讀