资讯专栏INFORMATION COLUMN

阿里云Redis混合存储典型场景:如何轻松搭建视频直播间系统

zhou_you / 3600人阅读

摘要:摘要本文主要介绍视频直播间系统,以及如何使用阿里云混合存储实例方便快捷的构建大数据量,低延迟的视频直播间服务。开播啦加油请假抱歉,今天有事鸽一天阿里云优势阿里云主从版提供万的,读写分离版本提供万最大力度支持系统的高并发需求。

摘要: 本文主要介绍视频直播间系统,以及如何使用阿里云Redis混合存储实例方便快捷的构建大数据量,低延迟的视频直播间服务。

背景

视频直播间作为直播系统对外的表现形式,在整个系统中处于核心地位。通常除了视频直播窗口外,直播间还包含在线用户,礼物,评论,点赞,排行榜等信息。直播间消息,时效性高,互动性强,对系统时延有着非常高的要求,非常适合使用Redis等缓存服务来处理。

直播信息

实时排行信息

实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息,适合使用Redis中的SortedSet结构进行存储。

例如,以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或者SortedSet来存储。

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:xe8xafxb7xe5x81x87",content:xe6x8axb1xe6xadx89xefxbcx8cxe4xbbx8axe5xa4xa9xe6x9cx89xe4xbax8bxe9xb8xbdxe4xb8x80xe5xa4xa9}"
2) "{datetime:201804112010,type:publish,title:xe5xbcx80xe6x92xadxe5x95xa6,content:xe5x8axa0xe6xb2xb9}"

阿里云Redis优势

阿里云主从版Redis提供10万的QPS,读写分离版本Redis提供60万QPS最大力度支持系统的高并发需求。

资深专家团队深度开发维护Redis源码,经千万服务考验,超高稳定性和安全性。

双机热备架构,故障秒级自动迁移,全力保障订单数据。

一键创建,一键扩容,全方位智能监控运维平台。请求量,活跃度一眼就能看清。

专业服务团队,实时监控可用性,7 x 24小时在线咨询。

使用Redis混合存储实例存储信息

阿里云Redis混合存储产品完全兼容Redis协议,用户无需修改任何代码,以低成本的NVMe盘存储不常访问的直播间数据,可以突破内存容量限制,单实例最高可支持TB级别的数据容量。

当Redis混合存储实例内存可以存储所有直播间数据时,访问所有直播间数据均可享受极致性能。

当直播间数据越来越多,快要超过实例内存限制时,Redis混合存储实例会自动从访问频率,访问时间等维度选择冷门的直播间数据,后台将其Value存储到磁盘上;

热门直播间数据仍然保留在内存中,性能不受任何影响;

当访问到磁盘上的冷门直播间数据时,数据会自动从后台加载到内存中,所有IO操作都经过阿里云自研的新一代存储引擎Fusion Engine极致优化,4K数据加载速度在20us左右;

通过将部分冷数据存储到磁盘的方式,有效降低了用户成本并突破内存对单实例容量的限制。

原文链接

阅读更多干货好文,请关注扫描以下二维码:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17728.html

相关文章

  • 面试中关于Redis的问题看这篇就够了

    摘要:所以查阅官方文档以及他人造好的轮子,总结了一些面试和学习中你必须掌握的问题。在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。 昨天写了一篇自己搭建redis集群并在自己项目中使用的文章,今天早上看别人写的面经发现redis在面试中还是比较常问的(笔主主Java方向)。所以查阅官方文档以及他人造好的轮子,总结了一些redis面试和学习中你必须掌握的问题。...

    yanbingyun1990 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<