浅谈Redis在直播场景的实践方案


Posted in Redis onApril 27, 2021

背景信息

视频直播间作为直播系统对外的表现形式,是整个系统的核心之一。除了视频直播窗口外,直播间的在线用户、礼物、评论、点赞、排行榜等数据信息时效性高,互动性强,对系统时延有着非常高的要求,非常适合使用Redis缓存服务来处理。
本篇最佳实践将向您展示使用Redis版搭建视频直播间信息系统的示例。您将了解三类信息的构建方法:

  • 实时排行类信息
  • 计数类信息
  • 时间线信息

实时排行类信息

实时排行类信息包含直播间在线用户列表、各种礼物的排行榜、弹幕消息(类似于按消息维度排序的消息排行榜)等,适合使用Redis中的有序集合(sorted set)结构进行存储。
Redis集合使用空值散列表(hash table)实现,因此对集合的增删改查操作的时间复杂度都是O(1)。有序集合中的每个成员都关联一个分数(score),可以方便地实现排序等操作。下面以增加和返回弹幕消息为例对有序集合在直播间信息系统中的实际运用进行说明。

以unix timestamp+毫秒数为分值,记录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"

返回指定时间段内的3条弹幕信息:

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

计数类信息

计数类信息以用户相关数据为例,有未读消息数、关注数、粉丝数、经验值等等。这类消息适合以Redis中的散列(hash)结构进行存储。比如关注数可以用如下的方法处理:

redis> HSET user:55 follower 5
(integer) 1
redis> HINCRBY user:55 follower 1 //关注数+1
(integer) 6 
redis> HGETALL user:55
1) "follow"
2) "6"

时间线信息

时间线信息是以时间为维度的信息列表,典型有主播动态、新帖等。这类信息是按照固定的时间顺序排列,可以使用列表(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}"

到此这篇关于浅谈Redis在直播场景的实践方案的文章就介绍到这了,更多相关Redis 直播场景实践内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木! 

Redis 相关文章推荐
Redis5之后版本的高可用集群搭建的实现
Apr 27 Redis
浅谈Redis存储数据类型及存取值方法
May 08 Redis
redis 限制内存使用大小的实现
May 08 Redis
redis实现共同好友的思路详解
May 26 Redis
Redis可视化客户端小结
Jun 10 Redis
了解Redis常见应用场景
Jun 23 Redis
Redis RDB技术底层原理详解
Sep 04 Redis
分布式Redis Cluster集群搭建与Redis基本用法
Feb 24 Redis
Redis之RedisTemplate配置方式(序列和反序列化)
Mar 13 Redis
Redis高可用集群redis-cluster详解
Mar 20 Redis
Redis 异步机制
May 15 Redis
Redis实现分布式锁的五种方法详解
Jun 14 Redis
redis限流的实际应用
Apr 24 #Redis
Redis安装启动及常见数据类型
redis配置文件中常用配置详解
Apr 14 #Redis
Redis遍历所有key的两个命令(KEYS 和 SCAN)
Apr 12 #Redis
浅谈redis五大数据结构和使用场景
Redis如何一键部署脚本
redis连接被拒绝的解决方案
You might like
谈谈新手如何学习PHP
2006/12/14 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
PHP强制转化的形式整理
2020/05/22 PHP
js几秒以后倒计时跳转示例
2013/12/26 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
Vue 实用分页paging实例代码
2017/04/12 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
python ---lambda匿名函数介绍
2019/03/13 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
python中常用的数据结构介绍
2021/01/12 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
养殖人员的创业计划书范文
2013/12/26 职场文书
客户表扬信范文
2014/01/10 职场文书
公务员转正鉴定材料
2014/02/11 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
外出培训学习心得体会
2016/01/18 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书