濮阳杆衣贸易有限公司

主頁 > 知識庫 > 淺談Redis在直播場景的實踐方案

淺談Redis在直播場景的實踐方案

熱門標(biāo)簽:宿遷便宜外呼系統(tǒng)平臺 超呼電話機(jī)器人 十堰營銷電銷機(jī)器人哪家便宜 鄭州人工智能電銷機(jī)器人系統(tǒng) 貴州電銷卡外呼系統(tǒng) 北京400電話辦理收費標(biāo)準(zhǔn) 日本中國地圖標(biāo)注 魔獸2青云地圖標(biāo)注 山東外呼銷售系統(tǒng)招商

背景信息

視頻直播間作為直播系統(tǒng)對外的表現(xiàn)形式,是整個系統(tǒng)的核心之一。除了視頻直播窗口外,直播間的在線用戶、禮物、評論、點贊、排行榜等數(shù)據(jù)信息時效性高,互動性強(qiáng),對系統(tǒng)時延有著非常高的要求,非常適合使用Redis緩存服務(wù)來處理。
本篇最佳實踐將向您展示使用Redis版搭建視頻直播間信息系統(tǒng)的示例。您將了解三類信息的構(gòu)建方法:

  • 實時排行類信息
  • 計數(shù)類信息
  • 時間線信息

實時排行類信息

實時排行類信息包含直播間在線用戶列表、各種禮物的排行榜、彈幕消息(類似于按消息維度排序的消息排行榜)等,適合使用Redis中的有序集合(sorted set)結(jié)構(gòu)進(jìn)行存儲。
Redis集合使用空值散列表(hash table)實現(xiàn),因此對集合的增刪改查操作的時間復(fù)雜度都是O(1)。有序集合中的每個成員都關(guān)聯(lián)一個分?jǐn)?shù)(score),可以方便地實現(xiàn)排序等操作。下面以增加和返回彈幕消息為例對有序集合在直播間信息系統(tǒng)中的實際運用進(jìn)行說明。

以unix timestamp+毫秒數(shù)為分值,記錄user55的直播間增加的5條彈幕:

redis> ZADD user55:_danmu 1523959031601166 message111111111111
(integer) 1
11.160.24.14:3003> ZADD user55:_danmu 1523959031601266 message222222222222
(integer) 1
11.160.24.14:3003> ZADD user55:_danmu 1523959088894232 message33333
(integer) 1
11.160.24.14:3003> ZADD user55:_danmu 1523959090390160 message444444
(integer) 1
11.160.24.14:3003> ZADD user55:_danmu 1523959092951218 message5555
(integer) 1

返回最新的3條彈幕信息:

redis> ZREVRANGEBYSCORE user55:_danmu +inf -inf LIMIT 0 3
1) "message5555"
2) "message444444"
3) "message33333"

返回指定時間段內(nèi)的3條彈幕信息:

redis> ZREVRANGEBYSCORE user55:_danmu 1523959088894232 -inf LIMIT 0 3
1) "message33333"
2) "message222222222222"
3) "message111111111111"

計數(shù)類信息

計數(shù)類信息以用戶相關(guān)數(shù)據(jù)為例,有未讀消息數(shù)、關(guān)注數(shù)、粉絲數(shù)、經(jīng)驗值等等。這類消息適合以Redis中的散列(hash)結(jié)構(gòu)進(jìn)行存儲。比如關(guān)注數(shù)可以用如下的方法處理:

redis> HSET user:55 follower 5
(integer) 1
redis> HINCRBY user:55 follower 1 //關(guān)注數(shù)+1
(integer) 6 
redis> HGETALL user:55
1) "follow"
2) "6"

時間線信息

時間線信息是以時間為維度的信息列表,典型有主播動態(tài)、新帖等。這類信息是按照固定的時間順序排列,可以使用列表(list)或者有序列表來存儲,示例如下:

redis> LPUSH user:55_recent_activitiy  '{datetime:201804112010,type:publish,title:開播啦,content:加油}'
(integer) 1
redis> LPUSH user:55_recent_activitiy '{datetime:201804131910,type:publish,title:請假,content:抱歉,今天有事鴿一天}'
(integer) 2
redis> LRANGE user:55_recent_activitiy 0 10
1) "{datetime:201804131910,type:publish,title:\xe8\xaf\xb7\xe5\x81\x87\",content:\xe6\x8a\xb1\xe6\xad\x89\xef\xbc\x8c\xe4\xbb\x8a\xe5\xa4\xa9\xe6\x9c\x89\xe4\xba\x8b\xe9\xb8\xbd\xe4\xb8\x80\xe5\xa4\xa9}"
2) "{datetime:201804112010,type:publish,title:\xe5\xbc\x80\xe6\x92\xad\xe5\x95\xa6,content:\xe5\x8a\xa0\xe6\xb2\xb9}"

到此這篇關(guān)于淺談Redis在直播場景的實踐方案的文章就介紹到這了,更多相關(guān)Redis 直播場景實踐內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

您可能感興趣的文章:
  • redis的五大數(shù)據(jù)類型應(yīng)用場景分析
  • 解析redis hash應(yīng)用場景和常用命令
  • 了解Redis常見應(yīng)用場景
  • 詳解Redis基本命令與使用場景
  • SpringBoot集成Redisson實現(xiàn)延遲隊列的場景分析
  • 淺談redis五大數(shù)據(jù)結(jié)構(gòu)和使用場景
  • 詳解redis中的鎖以及使用場景
  • Redis的11種Web應(yīng)用場景簡介
  • Redis 常見使用場景

標(biāo)簽:楊凌 北京 臺州 吉安 果洛 江蘇 大慶 朝陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談Redis在直播場景的實踐方案》,本文關(guān)鍵詞  淺談,Redis,在,直播,場景,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談Redis在直播場景的實踐方案》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺談Redis在直播場景的實踐方案的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    共和县| 彭州市| 芜湖市| 林州市| 日土县| 张家川| 梁平县| 庆安县| 杭锦旗| 西充县| 册亨县| 永川市| 灯塔市| 中江县| 剑阁县| 昭觉县| 深州市| 库车县| 宁国市| 霍山县| 竹山县| 龙川县| 临颍县| 宿松县| 滨州市| 新泰市| 嘉善县| 含山县| 漾濞| 永年县| 津南区| 岐山县| 广宗县| 黎城县| 衡山县| 清水河县| 博客| 玉溪市| 栖霞市| 新化县| 红河县|