吴忠躺衫网络科技有限公司

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

    文章

    3402

    瀏覽量

    42712
  • Redis
    +關注

    關注

    0

    文章

    378

    瀏覽量

    10942
收藏 人收藏

    評論

    相關推薦

    華為云 Flexus X 加速 Redis 案例實踐與詳解

    Redis 加速鏡像,更是為開發者提供了極大的便利。本文將詳細介紹如何利用華為云 Flexus X 實例自帶的 Redis 鏡像,快速部署并配置 Redis,以及通過實際案例展示其便捷性和高效性。 一、華為云 Flexus
    的頭像 發表于 01-23 17:52 ?77次閱讀
    華為云 Flexus X 加速 <b class='flag-5'>Redis</b> 案例<b class='flag-5'>實踐</b>與詳解

    Redis Cluster之故障轉移

    1. Redis Cluster 簡介 Redis Cluster 是 Redis 官方提供的 Redis 集群功能。 為什么要實現 Redis
    的頭像 發表于 01-20 09:21 ?210次閱讀
    <b class='flag-5'>Redis</b> Cluster之故障轉移

    Redis緩存與Memcached的比較

    Redis和Memcached都是廣泛使用的內存數據存儲系統,它們主要用于提高應用程序的性能,通過減少對數據庫的直接訪問來加速數據檢索。以下是對Redis和Memcached的比較,涵蓋了它們的一些
    的頭像 發表于 12-18 09:33 ?241次閱讀

    ChatGPT 在游戲開發中的創新應用

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

    游戲手柄震動馬達的技術特點分析

    游戲手柄震動馬達在現代電子游戲中扮演著重要的角色,其技術特點直接影響到玩家游戲體驗。游戲手柄震動馬達不僅為
    的頭像 發表于 10-09 11:12 ?482次閱讀
    <b class='flag-5'>游戲</b>手柄震動馬達的技術特點分析

    基于 FPGA 的飛機大戰游戲系統設計

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

    亞馬遜云科技助力所思科技打造爆款游戲《猛獸派對》 保障全球百萬玩家在線暢玩

    Animals》(中文名稱《猛獸派對》)。亞馬遜云科技的技術與解決方案幫助所思科技大幅提高了運維效率、降低了成本,并優化了《猛獸派對》游戲匹配機制,極大提升了玩家游戲體驗。《猛獸派對》在全球范圍內集結了來自美國、歐洲、亞洲、南
    發表于 05-13 13:48 ?183次閱讀
    亞馬遜云科技助力所思科技打造爆款<b class='flag-5'>游戲</b>《猛獸派對》 保障全球百萬<b class='flag-5'>玩家</b>在線暢玩

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

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

    Redis開源版與Redis企業版,怎么選用?

    點擊“藍字”關注我們數以千計的企業和數以百萬計的開發人員Redis開源版來構建應用程序。但隨著用戶數量、數據量和地區性的增加,成本、可擴展性、運營和可用性等問題也隨之而來。Redis企業版
    的頭像 發表于 04-04 08:04 ?1190次閱讀
    <b class='flag-5'>Redis</b>開源版與<b class='flag-5'>Redis</b>企業版,怎么選用?

    賽車游戲還能這么玩?看移遠如何賦能遠程現實賽車游戲新體驗

    你喜歡玩賽車游戲嗎?賽車游戲作為一種競技類游戲,不僅能帶來虛擬世界的“速度與激情”,更能在游戲中宣泄情緒、釋放壓力,深受年輕玩家的青睞。 ?
    發表于 04-03 14:51 ?355次閱讀
    賽車<b class='flag-5'>游戲</b>還能這么玩?看移遠如何賦能遠程現實賽車<b class='flag-5'>游戲</b>新體驗

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

    未知的 key,實際上可能面臨數據庫信息丟失和記錄篡改的風險。 作為一個重視技術的團隊,我們始終將用戶信息安全和使用體驗放在第一位。對于這次用戶使用開源 Redis 遇到的問題,我們盤點了 GaussDB(for Redis)精
    的頭像 發表于 03-28 22:09 ?718次閱讀
    數據安全沒保障?<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 ?790次閱讀
    <b class='flag-5'>GaussDB</b>(for <b class='flag-5'>Redis</b>) 特性揭秘:多租戶管理

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

    運行過程中悄悄產生的,讓人防不勝防。因此,一款可隨時在線診斷,且能主動預警,防患于未然的 Redis 服務產品顯得尤為重要。 ? 作為由華為云精心打造的企業級 RedisGaussDB
    的頭像 發表于 03-28 22:06 ?709次閱讀
    <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 ?556次閱讀
    新版 <b class='flag-5'>Redis</b> 不再“開源”,對使用者都有哪些影響?

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

    RediSearch 是一個 Redis 模塊,為 Redis 提供查詢、二級索引和全文搜索功能。
    的頭像 發表于 02-21 10:01 ?2523次閱讀
    <b class='flag-5'>Redis</b>官方搜索引擎來了,性能炸裂!
    百家乐路单破解软件| 百家乐最佳注码法| 真人百家乐游戏软件| 鼎丰娱乐城开户| 百家乐官网的保单打法| 谁会玩百家乐官网的玩法技巧和规则 | 金城百家乐买卖路| 网上玩百家乐会出签吗| 百家乐欧洲赔率| 威尼斯人娱乐城老| 大发888主页| 澳门顶级赌场娱乐网| 欢乐谷线上娱乐| 百乐坊百家乐官网游戏| 易胜博百家乐官网娱乐城| 墨尔本百家乐官网的玩法技巧和规则 | 百家乐官网博彩破解论坛| 威尼斯人娱乐网注册网址| 百家乐官网最新赌王| 昆明百家乐装修装潢有限公司| 大发888有哪些| 金花百家乐官网娱乐城| 百家乐走势图解| 拉萨市| 百家乐筹码样式| 亲朋棋牌手机版下载| 百家乐官网买对子技巧| 威尼斯人娱乐城最新地址| 会理县| 百家乐投注网中国| 娱乐城开户送彩金| 马牌百家乐官网的玩法技巧和规则| 水果机榨汁机| 金百家乐官网网站| 李雷雷百家乐的奥妙| 百家乐官网概率计算过程| 澳门百家乐玩法心得技巧| 中金时时彩平台| 百家乐博彩策略论坛| 洱源县| 百家乐注册送彩金平台|