iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >浅谈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://www.lsjlt.com/news/124672.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈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. 常见解决方案2. 布隆过滤器3. 缓存空数据与布隆过滤器的比较二、缓存击穿解决方案三、缓存雪崩解决方案Redis 经常用于系统中的缓存,这样可以解决目前 IO ...
    99+
    2024-04-02
  • 浅谈Spring Batch在大型企业中的最佳实践
    在大型企业中,由于业务复杂、数据量大、数据格式不同、数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理。而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理。这样的过程就是“批处理”。批处理应用通常有以下特点: 数据量大,...
    99+
    2023-05-30
    spring batch tc
  • 虎牙直播在微服务改造方面的实践和总结
    相比文字和图片,直播提供了人与人之间更丰富的沟通形式,其对平台稳定性的考验很大,那么倡导“以技术驱动娱乐”的虎牙直播(以下简称“虎牙”)是如何在技术上赋能娱乐,本文将为您介绍虎牙在DNS、服务注册、CMDB和服务配置中心等方面的实践。文章整...
    99+
    2023-06-05
  • Golang在金融行业的应用场景与实践
    go 语言在金融行业中应用广泛,优势包括高性能、并发性、容错性。应用场景包括高频交易、风险管理、分布式系统、api 开发和数据处理。实践案例包括高频交易平台、风险管理系统、清算系统、市场...
    99+
    2024-05-13
    golang 金融行业 交易平台
  • PHP开发直播功能的最佳实践方法
    随着技术的不断发展,直播已经成为了一种越来越流行的娱乐方式。许多企业,尤其是游戏和媒体公司,已经开始使用直播来与用户互动,并提供更为丰富的内容。由于PHP是一种普遍使用的Web开发语言,因此在本文中,我们将讨论如何使用PHP来开发直播功能,...
    99+
    2023-05-22
    PHP开发 直播功能 最佳实践方法
  • Redis:高并发场景下的数据存储解决方案
    Redis:高并发场景下的数据存储解决方案随着互联网的迅速发展,高并发场景下的数据存储已成为各大企业关注的焦点。在面对海量请求和快速响应的需求时,传统的关系型数据库面临性能瓶颈。而Redis作为一种高性能的非关系型数据库,逐渐成为高并发场景...
    99+
    2023-11-07
    解决方案 数据存储 高并发
  • 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
  • 浅谈Java实现分布式事务的三种方案
    目录一、问题描述二、分布式事务2.1、什么是分布式系统2.2、什么是事务2.3、什么是本地事务2.4、什么是分布式事务三、如何进行分布式事务控制3.1、CAP理论3.2、分布式系统如...
    99+
    2024-04-02
  • 深入解析MongoDB在大数据场景中的应用实践
    深入解析MongoDB在大数据场景中的应用实践摘要:随着大数据时代的到来,数据规模不断增大,对数据库存储和处理的需求也愈发迫切。MongoDB作为一种非关系型数据库,以其高可扩展性和灵活的数据模型在大数据场景中得到了广泛应用。本文将深入分析...
    99+
    2023-11-03
    大数据 实践 MongoDB
  • 浅析css隐藏div块的实现方法和应用场景
    CSS的隐藏功能在网页设计中起着重要的作用,尤其是在实现动态效果的过程中。在这个过程中,隐藏Div块是经常用到的一种方法。本文将为大家介绍CSS隐藏Div块的实现方法和应用场景。一、CSS隐藏Div块的实现方法display属性displa...
    99+
    2023-05-14
  • Redis中秒杀场景下超时与超卖问题的解决方案
    目录超时1.redis连接超时原因2.解决方法超卖1.秒杀超卖现象2.解决方案(1)利用乐观锁淘汰用户,解决超卖问题(2)、使用reids的 watch + multi + setn...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作