すべてのプロダクト
Search
ドキュメントセンター

Tair (Redis® OSS-Compatible):Tairを使用してライブストリーミングチャネル情報システムを構築する

最終更新日:Oct 28, 2024

Tair(Redis OSS-compatible) を使用して、低レイテンシで、大量のトラフィックに耐えることができるライブストリーミングチャネル情報システムを構築できます。

背景情報

ライブストリーミングチャネルは、ライブストリーミングシステムのコアコンポーネントの1つとして機能します。 ライブストリーミングウィンドウを除いて、ライブユーザー、仮想ギフト、コメント、いいね、リーダーボード、およびライブストリーミング中に生成される他のデータは、時間に制限があり、高度にインタラクティブで、遅延に敏感です。 Redisキャッシュサービスは、このようなデータを処理するのに適したソリューションです。

このトピックのベストプラクティスでは、Tair(Redis OSS-compatible) を使用してライブストリーミングチャネル情報システムを構築する方法を示します。 このトピックでは、3種類の情報のライブストリーミングチャネル情報システムを構築する方法について説明します。

  • リアルタイムランキング情報

  • カウント情報

  • タイムライン情報

リアルタイムランキング情報

リアルタイムランキング情報には、オンラインユーザーリスト、仮想ギフトのランキング、ライブコメントが含まれます。 ライブコメントは、メッセージがリーダーボード形式で表示されるのと同様に整理およびランク付けできます。 Redisのソートされたセット構造は、リアルタイムのランキング情報を格納するのに適しています。

Redisセットはハッシュテーブルに保存されます。 作成、読み取り、更新、および削除 (CRUD) 操作の時間の複雑さはO(1) です。 ソートされたセットの各メンバーは、ソートなどの操作を容易にするためにスコアに関連付けられます。 次の例は、ソートされたセットがライブストリーミングチャネル情報システムを構築する方法を示しています。 この例では、追加および返されたライブコメントが使用されます。

  • user55ライブストリーミングチャネルの最後の5つのライブコメントを記録するには、スコア形式としてunix timestamp + ミリ秒を使用します。

    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"
  • 指定された期間内に3つのライブコメントを返します。

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

カウント情報

ユーザー関連データの場合、カウント情報には未読メッセージ、フォロワー、ファンの数、経験値が含まれます。 Redisのハッシュ構造は、このタイプのデータを格納するのに適しています。 たとえば、フォロワー数は次のように処理できます。

redis> HSET user:55 follower 5
(integer) 1
redis> HINCRBY user:55 follower 1 //Number of followers + 1
(integer) 6 
redis> HGETALL user:55
1) "follower"
2) "6"

タイムライン情報

タイムライン情報は、時系列でソートされた情報のリストです。 タイムライン情報には、アンカーモーメントと新しい投稿が含まれます。 このタイプの情報は、固定された時系列順に配置され、Redisリストまたは順序付きリストを使用して格納することができます。 例:

redis> LPUSH user:55_recent_activity  '{datetime:201804112010,type:publish,title: The show starts, content: Come on}'
(integer) 1
redis> LPUSH user:55_recent_activity '{datetime:201804131910,type:publish,title: Ask for a leave, content: Sorry, I have plans today.}'
(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}"

関連資料