返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >浅谈Redis在直播场景的实践方案
  • 792
分享到

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

2024-04-02 19:04:59 792人浏览 八月长安
摘要

背景信息 视频直播间作为直播系统对外的表现形式,是整个系统的核心之一。除了视频直播窗口外,直播间的在线用户、礼物、评论、点赞、排行榜等数据信息时效性高,互动性强,对系统时延有着非常

背景信息

视频直播间作为直播系统对外的表现形式,是整个系统的核心之一。除了视频直播窗口外,直播间的在线用户、礼物、评论、点赞、排行榜等数据信息时效性高,互动性强,对系统时延有着非常高的要求,非常适合使用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 直播场景实践内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网! 

--结束END--

本文标题: 浅谈Redis在直播场景的实践方案

本文链接: https://lsjlt.com/news/124672.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 浅谈Redis在直播场景的实践方案
    背景信息 视频直播间作为直播系统对外的表现形式,是整个系统的核心之一。除了视频直播窗口外,直播间的在线用户、礼物、评论、点赞、排行榜等数据信息时效性高,互动性强,对系统时延有着非常...
    99+
    2024-04-02
  • 浅谈Redis在秒杀场景的作用
    目录1 秒杀负载特征1.1 瞬时并发访问量很高1.2 读多写少2 秒杀阶段2.1 秒杀前2.2 秒杀中2.3 秒杀结束后3 Redis可支撑秒杀的特性3.1 支持高并发3.2 保证库存查验和库存扣减的原子性4 基于原子操...
    99+
    2023-01-28
    Redis秒杀
  • 浅谈C++高并发场景下读多写少的优化方案
    目录概述分析双缓冲工程实现上需要攻克的难点核心代码实现简单说说golang中双缓冲的实现相关文献来源:https://www.cnblogs.com/longbozhan/p/157...
    99+
    2024-04-02
  • 浅谈MySQL与redis缓存的同步方案
    目录一、方案1(UDF)演示案例二、方案2(解析binlog)Canal开源技术三、附加本文介绍MySQL与Redis缓存的同步的两种方案 方案1:通过MySQL自动同步刷新R...
    99+
    2024-04-02
  • 浅谈SpringCache与redis集成实现缓存解决方案
    缓存可以说是加速服务响应速度的一种非常有效并且简单的方式。在缓存领域,有很多知名的框架,如EhCache 、Guava、HazelCast等。Redis作为key-value型数据库,由于他的这一特性,Redis也成为一种流行的数据缓存工具...
    99+
    2023-05-30
    spring cache redis
  • 浅谈Redis跟MySQL的双写问题解决方案
    目录写在前面三种读写缓存策略Cache-AsidePattern(旁路缓存模式)Read-Through/Write-Through(读写穿透)WriteBehindPattern(...
    99+
    2024-04-02
  • 浅谈spring使用策略模式实现多种场景登录方式
     @Autowired注解可以帮我们自动注入我们想要的 Bean。 如果只是简单使用@Autowired会遇到spring IOC容器中一个接口有多个实现的情况,spring无法识别...
    99+
    2024-04-02
  • PHP实践:分布式场景下的Session共享解决方案实现
    🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发...
    99+
    2023-08-30
    php 分布式 开发语言 session共享
  • 浅谈Redis处理接口幂等性的两种方案
    目录一、接口幂等性1.1、什么是接口幂等性1.2、为什么需要实现幂等性1.3、引入幂等性后对系统的影响二、如何设计幂等2.1、全局的唯一性ID2.2、幂等设计的基本流程三、接口幂等性常见解决方案3.1、下游传递唯一请求编...
    99+
    2022-08-15
    Redis接口幂等性
  • 浅谈Android实践之ScrollView中滑动冲突处理解决方案
    1. 前言  在Android开发中,如果是一些简单的布局,都很容易搞定,但是一旦涉及到复杂的页面,特别是为了兼容小屏手机而使用了ScrollView以后,就会出现很...
    99+
    2022-06-06
    scrollview 解决方案 Android
  • Golang在金融行业的应用场景与实践
    go 语言在金融行业中应用广泛,优势包括高性能、并发性、容错性。应用场景包括高频交易、风险管理、分布式系统、api 开发和数据处理。实践案例包括高频交易平台、风险管理系统、清算系统、市场...
    99+
    2024-05-13
    golang 金融行业 交易平台
  • 虎牙直播在微服务改造方面的实践和总结
    相比文字和图片,直播提供了人与人之间更丰富的沟通形式,其对平台稳定性的考验很大,那么倡导“以技术驱动娱乐”的虎牙直播(以下简称“虎牙”)是如何在技术上赋能娱乐,本文将为您介绍虎牙在DNS、服务注册、CMDB和服务配置中心等方面的实践。文章整...
    99+
    2023-06-05
  • 浅谈Redis 缓存的三大问题及其解决方案
    目录一、缓存穿透1. 常见解决方案2. 布隆过滤器3. 缓存空数据与布隆过滤器的比较二、缓存击穿解决方案三、缓存雪崩解决方案Redis 经常用于系统中的缓存,这样可以解决目前 IO ...
    99+
    2024-04-02
  • PHP开发直播功能的最佳实践方法
    随着技术的不断发展,直播已经成为了一种越来越流行的娱乐方式。许多企业,尤其是游戏和媒体公司,已经开始使用直播来与用户互动,并提供更为丰富的内容。由于PHP是一种普遍使用的Web开发语言,因此在本文中,我们将讨论如何使用PHP来开发直播功能,...
    99+
    2023-05-22
    PHP开发 直播功能 最佳实践方法
  • 浅谈Spring Batch在大型企业中的最佳实践
    在大型企业中,由于业务复杂、数据量大、数据格式不同、数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理。而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理。这样的过程就是“批处理”。批处理应用通常有以下特点: 数据量大,...
    99+
    2023-05-30
    spring batch tc
  • 直播回顾 丨TBase多中心多活与高可用方案实践
    腾讯云数据库【国产数据库专题线上技术沙龙】正在火热进行中,4月28日陈爱声的分享已经结束,没来得及参与的小伙伴不用担心,以下就是直播的视频和文字回顾。 关注“腾讯云数据库”公众号,回复“0428陈爱声”...
    99+
    2024-04-02
  • Redis:高并发场景下的数据存储解决方案
    Redis:高并发场景下的数据存储解决方案随着互联网的迅速发展,高并发场景下的数据存储已成为各大企业关注的焦点。在面对海量请求和快速响应的需求时,传统的关系型数据库面临性能瓶颈。而Redis作为一种高性能的非关系型数据库,逐渐成为高并发场景...
    99+
    2023-11-07
    解决方案 数据存储 高并发
  • TiDB 在北京银行交易场景中的应用实践
    作者介绍:陈振东,北京银行软件开发部 北京银行是一家城市商业银行,公司价值位列中国区域性发展银行的首位,依托于中国经济的大环境,北京银行的资产总量在全球千家大银行中名列第 61 位,连续六年跻身全球银行业百强。北京银行积极开辟多元化的业...
    99+
    2019-03-22
    TiDB 在北京银行交易场景中的应用实践
  • Redis在实时系统中的应用场景有哪些
    缓存:Redis高性能的缓存系统,能够快速地存储和检索数据,提高系统的性能和响应速度。在实时系统中,可以将频繁访问的数据存储在R...
    99+
    2024-05-07
    Redis
  • 浅谈mysql使用limit分页优化方案的实现
    Mysql limit分页语句用法 与Oracle和MS SqlServer相比,mysql的分页方法简单的让人想哭。 --语法: SELECT * FROM table LIMIT [offs...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作