国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    4204

    瀏覽量

    46130
  • Redis
    +關注

    關注

    0

    文章

    392

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Redis哨兵模式的自動故障檢測與主從切換實戰

    Redis 主從復制解決了讀擴展和數據冗余問題,但主節點故障時需要人工介入切換,這在生產環境中是不可接受的。Sentinel(哨兵)模式在主從架構之上增加了自動故障檢測和故障轉移能力,是 Redis 高可用的標準方案之一。
    的頭像 發表于 02-27 11:05 ?122次閱讀

    MediaTek與異環游戲達成深度合作

    為了給全球玩家帶來更流暢、更節能的游戲體驗,MediaTek與《異環》達成深度合作,雙方團隊基于天璣星速引擎的倍幀技術(MediaTek Frame Rate Converter,簡稱MFRC)為全球玩家帶來畫面更流暢、續航更持
    的頭像 發表于 01-27 09:20 ?460次閱讀

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

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

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

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

    Redis集群部署配置詳解

    Redis集群是一種分布式Redis解決方案,通過數據分片和主從復制實現高可用性和橫向擴展。集群將整個數據集分割成16384個哈希槽(hash slots),每個節點負責一部分槽位。
    的頭像 發表于 07-17 11:04 ?979次閱讀

    Redis集群部署與性能優化實戰

    Redis作為高性能的內存數據庫,在現代互聯網架構中扮演著關鍵角色。作為運維工程師,掌握Redis的部署、配置和優化技能至關重要。本文將從實戰角度出發,詳細介紹Redis集群的搭建、性能優化以及監控運維的核心技術。
    的頭像 發表于 07-08 17:56 ?850次閱讀

    游戲玩家的聽覺革命!這款虛擬 7.1 游戲聲卡評估板讓你 “聲” 臨其境!

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

    C#上位機與運動控制卡網絡通訊的周期上報

    使用C#上位機編程實現運動控制卡網絡通訊的周期上報功能
    的頭像 發表于 06-26 13:59 ?827次閱讀
    C#上位機與運動控制卡網絡通訊的周期<b class='flag-5'>上報</b>

    【經驗分享】在Omni3576上編譯Redis-8.0.2源碼,并安裝及性能測試

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

    【幸狐Omni3576邊緣計算套件試用體驗】Redis最新8.0.2版本源碼安裝及性能測試

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

    游戲手柄振動馬達:沉浸式游戲體驗的核心

    游戲手柄振動馬達是現代游戲設備中不可或缺的一部分,它為玩家提供了更加沉浸式的游戲體驗。通過精確的振動反饋,游戲手柄振動馬達能夠將
    的頭像 發表于 05-17 00:05 ?916次閱讀

    Redis 再次開源!

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

    艾為電子芯片產品在游戲手柄中的應用方案

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

    redis三種集群方案詳解

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

    亞馬遜云科技推出Amazon GameLift Streams助力開發者實現游戲全平臺跨設備串流

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