摘要:摘要本文主要介绍视频直播间系统,以及如何使用阿里云混合存储实例方便快捷的构建大数据量,低延迟的视频直播间服务。开播啦加油请假抱歉,今天有事鸽一天阿里云优势阿里云主从版提供万的,读写分离版本提供万最大力度支持系统的高并发需求。
摘要: 本文主要介绍视频直播间系统,以及如何使用阿里云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在面试中还是比较常问的(笔主主Java方向)。所以查阅官方文档以及他人造好的轮子,总结了一些redis面试和学习中你必须掌握的问题。...
阅读 3206·2021-11-11 11:00
阅读 2552·2019-08-29 11:23
阅读 1370·2019-08-29 10:58
阅读 2300·2019-08-29 10:58
阅读 2892·2019-08-23 18:26
阅读 2484·2019-08-23 18:18
阅读 2016·2019-08-23 16:53
阅读 3370·2019-08-23 13:13