摘要: 本文主要介绍视频直播间系统,以及如何使用阿里云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:\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提供10万的QPS,读写分离版本Redis提供60万QPS最大力度支持系统的高并发需求。
  • 资深专家团队深度开发维护Redis源码,经千万服务考验,超高稳定性和安全性。
  • 双机热备架构,故障秒级自动迁移,全力保障订单数据。
  • 一键创建,一键扩容,全方位智能监控运维平台。请求量,活跃度一眼就能看清。
  • 专业服务团队,实时监控可用性,7 x 24小时在线咨询。

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

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

  1. 当Redis混合存储实例内存可以存储所有直播间数据时,访问所有直播间数据均可享受极致性能。
  2. 当直播间数据越来越多,快要超过实例内存限制时,Redis混合存储实例会自动从访问频率,访问时间等维度选择冷门的直播间数据,后台将其Value存储到磁盘上;
  3. 热门直播间数据仍然保留在内存中,性能不受任何影响;
  4. 当访问到磁盘上的冷门直播间数据时,数据会自动从后台加载到内存中,所有IO操作都经过阿里云自研的新一代存储引擎Fusion Engine极致优化,4K数据加载速度在20us左右;
  5. 通过将部分冷数据存储到磁盘的方式,有效降低了用户成本并突破内存对单实例容量的限制。

原文链接

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

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

  1. 阿里云Redis读写分离典型场景:如何轻松搭建电商秒杀系统

    秒杀活动是绝大部分电商选择的低价促销,推广品牌的方式.不仅可以给平台带来用户量,还可以提高平台知名度.一个好的秒杀系统,可以提高平台系统的稳定性和公平性,获得更好的用户体验,提升平台的口碑,从而提升秒 ...

  2. 腾讯云轻量应用服务器使用 SRS 应用镜像搭建个人直播间、视频转播、本地录制!

    SRS 是一个开源的流媒体集群,主要应用在直播和 WebRTC,支持 RTMP.WebRTC.HLS.HTTP-FLV 和 SRT 等常用协议. 轻量应用服务器提供了 SRS 应用镜像,使您无需再关注 ...

  3. 阿里云Redis典型场景:如何构建可扩展通用排行榜系统

    点击有惊喜 摘要 本文主要介绍通用排行榜的需求功能,并介绍了基于Redis的ZSET数据结构的排序方法,另外探讨了通用排行榜的架构及用户如何通过阿里云Redis解决通用排行架构的技术问题. 背景 移动 ...

  4. 《阿里云互联网多媒体存储解决方案蓝皮书》震撼上线!

    前言 中国互联网从1994年正式接入国际网络至今,以非凡的力量改变了世界,重新塑造了商业.政治.社会,甚至改变了全球几十亿的人的生活. 中国互联网络信息中心(CNNIC)第45次<中国互联网络发 ...

  5. C# 阿里云Redis存储服务 使用总结

    项目中先导入阿里云Redis的库 //先导入命名空间using ServiceStack.Redis;string host = "";/*访问host地址*/string pas ...

  6. Redis 混合存储最佳实践指南

    Redis 混合存储实例是阿里云自主研发的兼容Redis协议和特性的云数据库产品,混合存储实例突破 Redis 数据必须全部存储到内存的限制,使用磁盘存储全量数据,并将热数据缓存到内存,实现访问性能与 ...

  7. 深度解析双十一背后的阿里云 Redis 服务

    在一片欢呼之中,2018年的双十一完美收官,各项数据不出意外的刷出了新的记录,亮眼的数据背后是阿里过硬的技术支撑.其中阿里云Redis不仅保障了阿里集团内部业务双十一的流量洪峰平稳度过,也让使用阿里云 ...

  8. 王义成:阿里云Redis服务助力游戏行业发展

    2018数据库直播大讲堂峰会Redis专场,来自阿里云高级产品专家王义成带来Redis助力游戏行业的相关演讲.主要从传统数据库的压力开始谈起,着重介绍了阿里云Redis产品架构以及不同的版本,接着对R ...

  9. 阿里云的NoSQL存储服务OTS的应用分析

    这篇文章主要介绍了阿里云的NoSQL存储服务OTS的应用分析,OTS作为阿里巴巴开发的NoSQL存储技术服务现已面向用户商业化,需要的朋友可以参考下. 1. 概要   OTS是构建在阿里云飞天分布式系 ...

最新文章

  1. 2010-11季,关注波士顿凯尔特人的10个理由
  2. 枚举类型(C# 编程指南)
  3. 详细了解BGP—边界网关协议
  4. 今天,Java编程周末提高班(第一期)正式结束
  5. Linux debian ubuntu安装GIMP软件
  6. 一个值得思考的赚钱模式
  7. 高性能极致用户体验前端开发实战
  8. 逐帧动画案例(奔跑的小人)
  9. AI音箱工作原理浅析
  10. 各种工具配置忽略证书
  11. 2020 GKCTF
  12. 获取LOL所有在售皮肤的价格和发布日期
  13. inv在C语言是什么函数,机械原理中的inv  函数是什么意思?
  14. 如何在WindowsXP中发短信
  15. win10隐藏任务栏_win10系统任务栏彰显个性的设置方法
  16. C# 微信支付教程系列之扫码支付
  17. unity农场游戏Farm Business Version 2
  18. java获取内容为空_Java使用POI读取Word文档时如果文档内容为空时出现异常
  19. 2、正向代理和反向代理(正向代理(客户端),反向代理(服务器))
  20. CTF密码学部分知识总结(一)

热门文章

  1. 【LeetCode笔记】236. 二叉树的最近公共祖先(Java、二叉树、DFS)
  2. matlab length_MATLAB入门
  3. jsbridge原理_React Hooks 原理与最佳实践
  4. MATLAB静力学分析,锻造操作机静力学的Matlab仿真分析
  5. ie8 html 编辑器 为word,ie8生成word
  6. quill鼠标悬浮 出现提示_「超逸酷玩」VT300S RGB电竞游戏鼠标支持云同步自定义设置...
  7. 如何把通达信公式变成python_通达信附图如何改成选股公式?
  8. afm原子力分析软件_牛津仪器发布全新大样品原子力显微镜Jupiter XR
  9. vue点击按钮上传图片_关于javascript:Vue-点击按钮提交表单
  10. 陆志勤:记交大数学系二三事