华为云应用中间件DCS系列—Redis实现(视频直播)消息弹幕

news2024/11/26 1:37:16

云服务、API、SDK,调试,查看,我都行

阅读短文您可以学习到:应用中间件系列之Redis实现(视频直播)消息弹幕

1      什么是DEVKIT

华为云开发者插件(Huawei Cloud Toolkit),作为华为云围绕其产品能力向开发者桌面上的延伸,帮助开发者快速在本地连接华为云,打通华为云到开发者的最后一公里。Huawei Cloud ToolKit是围绕华为云开发者生态工具体系打造的一系列IDE插件,支持VS Code、IntelliJ IDEA等系列平台、以及华为云自研 CodeArts IDE ,帮助开发者更高效、便捷的搭建应用。致力于为开发者提供更稳定、快速、安全的编程体验。

体验路径:Toolkit-华为云

2      IDE与DEVKIT的关系

2.1      什么是CodeArts IDE?

CodeArts IDE是一个集成开发环境(IDE),兼具源代码编辑器的简易性和开发人员工具的强大功能,如代码补全和调试。

下载路径:Toolkit-华为云

2.2     IntelliJ IDEA与DEVKIT的关系

安装准备

下载并安装JDK1.8或更高版本。

下载并安装IntelliJ IDEA 2020.2或更高版本。

安装验证

在IntelliJ系列平台上安装插件成功后在左侧的导航栏中可以看到Huawei Cloud Toolkit图标,点击后面板会出现Huawei Cloud API的字样,则说明安装成功。

下载路径:Toolkit-华为云

2.3     CodeArts IDE与DEVKIT的关系

API插件是CodeArts IDE原生内置的插件,默认已经安装。左侧的导航栏中可以看到相关图标。

下载路径:Toolkit-华为云

2.4      Visual Studio Code IDE与DEVKIT的关系

安装准备

下载并安装Visual Studio Code最新版本。

安装验证

在VS Code IDE安装插件成功后在左侧的导航栏中可以看到Huawei Cloud Toolkit图标,点击后面板会出现Huawei Cloud API的字样,则说明安装成功。

下载路径:Toolkit-华为云

3      Redis实现(视频直播)消息弹幕示例(Java版本)

3.1      使用Redis实现排行榜功能

版本说明

本示例基于华为云分布式缓存服务Redis基础版 5.0开发。

简介

Redis实现(视频直播)消息弹幕示例(Java版本)

直播间的在线用户列表,礼物排行榜,弹幕消息等信息,都适合使用Redis中的SortedSet结构进行存储。

例如弹幕消息,可使用ZREVRANGEBYSCORE排序返回,在Redis 5.0中,新增了zpopmax,zpopmin命令,更加方便消息处理。

本实践介绍如何使用Redis实现(视频直播)消息弹幕功能。

开发前准备

注册华为云账号,详细操作请参见如何注册华为云管理控制台的用户?,并完成实名认证。

已购买具有公网IP的ECS,详细操作请参见购买并登录Linux弹性云服务器。

已购买DCS缓存实例,详细操作请参见购买缓存实例,且需保证DCS实例与已购买具的ECS在同一虚拟私有云、子网内,并在已购买具的ECS上配置公网访问Redis,详细操作请参见使用Nginx实现公网访问Redis 4.0/5.0的单机/主备/Proxy集群实例。

安装SDK

您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

开始使用

导入依赖模块

//导入数据类型类
import java.util.Set;
//Redis客户端Jedis类
import redis.clients.jedis.Jedis;

生成直播间弹幕数据

示例代码

int num = 5;
            // 随机生成进入直播间发弹幕用户数据
            for (int i = 0; i < num; i++) {
                jedisClient.zadd(key, danmuOrder + i,
                    "message" + (i + 1) + (i + 1) + (i + 1) + (i + 1) + (i + 1) + (i + 1));
            }   

获取直播间弹幕

示例代码

 // 获取所有新增弹幕
            Set<String> sortedDanmuList = jedisClient.zrevrangeByScore(key, danmuOrder + num, danmuOrder);
            for (String danmu : sortedDanmuList) {
                System.out.println(danmu);
            }

            System.out.println();

            System.out.println("                   " + key + "直播间最新的3条弹幕");

            Set<String> sorteDamu0List = jedisClient.zrevrangeByScore(key, danmuOrder + num, danmuOrder, 0, 3);
            for (String danmu : sorteDamu0List) {
                System.out.println(danmu);
            }

3.2     展示效果

编译并运行以上Demo程序,结果如下:

直播弹幕列表

弹幕内容: message-07f1add5-2f85-4309-9f31-313c860b33dc, 发送时间: 1686902337377

弹幕内容: message-2062e817-3145-4d8b-af7f-46f334c8569c, 发送时间: 1686902337394

弹幕内容: message-ad36a0ca-e8bd-4883-a091-e12a25c00106, 发送时间: 1686902337396

弹幕内容: message-f02f9960-bb57-49ae-b7d8-6bd6d3ad3d14, 发送时间: 1686902337412

弹幕内容: message-5ca39948-866e-4e54-a469-f958cae843f6, 发送时间: 1686902337457

弹幕内容: message-5cc8b4ba-da61-4d01-9625-cf2e7337ef10, 发送时间: 1686902337489

弹幕内容: message-15378516-18ce-4da7-bd3c-35c57dd65602, 发送时间: 1686902337495

弹幕内容: message-1b280525-53e5-4fc6-a3e7-fb8e71eef85e, 发送时间: 1686902337540

弹幕内容: message-adf876d1-e747-414e-92a2-397fc329bd58, 发送时间: 1686902337541

弹幕内容: message-1d8d7901-164f-4dd4-abb4-6f2345164b0e, 发送时间: 1686902337582

弹幕内容: message-fb35b1b4-277a-48bf-b22b-80070aae8475, 发送时间: 1686902337667

弹幕内容: message-973b1b03-bf95-44d8-ab91-0c317b2d61b3, 发送时间: 1686902337755

弹幕内容: message-1481f883-757d-47f7-b8c0-df024d6e64a4, 发送时间: 1686902337770

弹幕内容: message-b79292ca-2409-43fb-aaf0-e33f3b9d9c8d, 发送时间: 1686902337820

弹幕内容: message-66b0e955-d509-4475-9ae5-12fb86cf9596, 发送时间: 1686902337844

弹幕内容: message-12b6d15a-037a-47ee-8294-8625d202c0a0, 发送时间: 1686902337907

弹幕内容: message-fbc06323-da2a-44b8-874b-d2cf1a737064, 发送时间: 1686902337927

弹幕内容: message-7a0f787c-aff1-422f-9e62-4beda0cd5914, 发送时间: 1686902337977

弹幕内容: message-8ba5e4e0-22af-4f80-90a6-35062967e0fd, 发送时间: 1686902337992

弹幕内容: message-fa9e1169-e918-4141-9805-87edcf84c379, 发送时间: 1686902338000

弹幕内容: message-5d17be15-ba2e-461f-aba5-65c20c21d313, 发送时间: 1686902338059

弹幕内容: message-dcedc840-1be7-496a-b781-5b79c2091fe5, 发送时间: 1686902338067

弹幕内容: message-9e39eb28-6629-4d4c-8970-2acdc0e81a5c, 发送时间: 1686902338102

弹幕内容: message-030b11fe-c258-4ca2-ac82-5e6ca1eb688f, 发送时间: 1686902338211

弹幕内容: message-93322018-a987-47ba-8093-3937dddda97d, 发送时间: 1686902338242

弹幕内容: message-bc04a9b0-ec83-4a24-83f6-0a4f25ee8896, 发送时间: 1686902338281

弹幕内容: message-c6dd96d0-c938-41e4-b5d8-6275fdf83050, 发送时间: 1686902338290

弹幕内容: message-12b70173-1b86-4370-a7ea-dc0ade135422, 发送时间: 1686902338312

弹幕内容: message-a39c2ef8-8167-4945-b60d-355db6c69005, 发送时间: 1686902338318

弹幕内容: message-2c3bf2fb-5298-472c-958c-c4b53d734e89, 发送时间: 1686902338326

最新的5条弹幕信息

弹幕内容: message-2c3bf2fb-5298-472c-958c-c4b53d734e89, 发送时间: 1686902338326

弹幕内容: message-a39c2ef8-8167-4945-b60d-355db6c69005, 发送时间: 1686902338318

弹幕内容: message-12b70173-1b86-4370-a7ea-dc0ade135422, 发送时间: 1686902338312

弹幕内容: message-c6dd96d0-c938-41e4-b5d8-6275fdf83050, 发送时间: 1686902338290

弹幕内容: message-bc04a9b0-ec83-4a24-83f6-0a4f25ee8896, 发送时间: 1686902338281

Process finished with exit code 0

4      体验插件的魅力

华为云devkit已上线:Toolkit-华为云

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1101274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么智能相机需要搭配镜头使用?

镜头作用是将光学图像聚焦在图像传感器的光敏面阵上。不同类型的工业镜头&#xff0c;成像质量也各不相同&#xff0c;成像质量也有差异&#xff0c;影响工业镜头的因素有哪些呢 图像中心与边缘的影响图像中心较边缘分辨率高&#xff1b;图像中心较边缘光场照度高&#xff1b;像…

springboot配置swagger

springboot配置swagger Swagger 是什么Swagger配置springboot代码展示总结 Swagger 是什么 Swagger 是一个用于构建、文档和调用 RESTful Web 服务的强大工具。它提供了以下几方面的好处&#xff1a; 自动生成 API 文档: Swagger 可以自动生成 API 文档&#xff0c;包括接口的…

JS代码控制台临时测试

在进行js修改测试时&#xff0c;有可能需要我们不断的清楚缓存去加载我们修改的js文件&#xff0c;这样操作对于频繁的js修改测试很不友好&#xff0c;实际上&#xff0c;我们可以通过控制台覆盖原js代码段进行测试&#xff0c;接下来&#xff0c;以本平台为例&#xff0c;我实…

React高级特性之HOC高阶组件

一、概念 把一个组件当成另外一个组件的参数传入&#xff0c;然后通过一定的判断&#xff0c;返回新的组件。 二、基本用法 三、实战 例1&#xff1a;监听鼠标位置 App.js import React from react import HOCDemo from ./6.高级特性/4.HOCDemofunction App() {return (<…

redis(普通连接和连接池、字符串类型、hash类型、列表类型)

1 redis普通连接和连接池 1.1 普通连接 1.2 连接池 2 redis字符串类型 3 redis hash类型 4 redis列表类型 1 redis普通连接和连接池 #1 python 代码作为客户端---》连接# 2 安装模块&#xff1a;pip install redis1.1 普通连接 from redis import Redisconn Redis(host&qu…

【vim 学习系列文章 10 -- vim 将代码中空格高亮显示方法】

文章目录 vim 高亮空格使用背景如何配置vim 可以自动显示空格呢&#xff1f;vim highlight 命令使用介绍vim 空白行的处理vim match 命令详细介绍 vim 高亮空格使用背景 开发人员在编写代码之后&#xff0c;在review通过之后会将代码推到服务器然后merge&#xff0c;但是有些代…

02、RocketMQ -- 应用场景、核心概念

目录 1、消息中间件应用场景场景一&#xff1a;异步解耦同步调用异步调用 场景二&#xff1a;流量削峰 2、常用消息中间件ActiveMQKafkaRabbitMQRocketMQ 3、RocketMQ的核心概念生产者Producer消费者Consumer名字服务Name Server代理服务器Broker Server消息主题Topic消息队列M…

idea使用Spring Initializer创建springboot项目的坑【保姆级教学】

项目场景&#xff1a; 提示&#xff1a;这里先简述项目创建后遇到的问题和解决方案&#xff1a; idea 使用 Spring Initializer 创建springboot项目后&#xff0c; 有以下问题&#xff1a; ① 右键没有Run ② 右键New新建文件发现无Java Class选项 然后解决掉 ①② 问题后出…

AbortController中止请求通信[模糊搜索案例]

AbortController中止请求通信[模糊搜索案例] AbortController中止请求通信(模糊搜索案例) AbortController中止请求通信(模糊搜索案例) 这里用模糊搜索来做示例&#xff0c;这里是调用后端模糊搜索接口 该案例的中止请求可以用于很多地方&#xff0c;比如取消上传/下载文件等 完…

【分享】哇,不愧是国家出品!逆袭必备!!

哈喽&#xff0c;大家好&#xff0c;木易巷又发现好东西了 你还在为学习技能花&#x1f4b0;吗&#xff1f; 别傻了&#xff0c;偷偷告诉你&#x1f92b;&#xff0c;国家早就为我们提供了免费的学习网站&#xff01;不仅可以免费学习各种技能&#xff0c;还可以拿职业证书&a…

华为数通方向HCIP-DataCom H12-831题库(单选题:281-300)

第281题 如图所示,某工程师利用4台路由器进行网络互通测试,其中R1、R2、R3部署OSPF (Area0)实现网络互通,R2、R3、R4部署IS-IS(均部署为Level-2路由器)实现网络互通,现在该工程师在R1的OSPF进程中引入直连路由,在R2的IS-IS进程中引入OSPF路由,则以下关于该场景的描述,正…

Fiddler+逍遥模拟器抓包显示tunnel to无法抓包的解决方法

1.安装OpenSSL 下载便携式安装包&#xff1a;https://slproweb.com/products/Win32OpenSSL.html 如果不放心第三方的也可以打开官网去下载安装&#xff0c;官网地址 我这里用的第三方的 下载下来一直下一步安时就好&#xff0c;到了最后一步是给坐着捐赠&#xffe5;10&am…

高速电路设计----第三章

一、数字信号需要上拉的情况 1、 一般信号上拉接多大的电阻要看对于芯片的电流要求。看芯片datasheet的I(BHLO)和I&#xff08;BHHO&#xff09;两个参数。平时的话: 3.3V的上拉为1K~3.3k即可 5V的上拉电阻为4.7K到10K即可。 2、数字信号的逻辑控制&a…

操作系统四大特征

OS四大特征 1.OS的并发性&#xff08;同一时间间隔内执行和调度多个程序的能力&#xff09; 宏观上&#xff0c;处理机同时执行多道程序 微观上&#xff0c;处理机在多道程序间高速切换(分时交替执行)&#xff0c;微观上并非是同时执行的。 关注单个处理机同一时间段内处理任…

2023最新性能测试八股文【附答案】,软测人必备!

1. 请描述什么是性能测试、什么是负载测试、什么是压力测试&#xff1f; 【参考答案】 性能测试&#xff1a;性能测试是和功能测试相对应的。根据用户场景进行的单个用户操作&#xff0c;是属于功能测试领域&#xff0c;主要是验证软件是否可以满足用户的功能需求。比如&#x…

C++之IO流

IO流 C语言的输入与输出流是什么CIO流C标准IO流C文件IO流 stringstream的介绍 C语言的输入与输出 在C语言当中&#xff0c;我们使用最频繁的输入输出方式就是scanf与printf&#xff1a; scanf&#xff1a; 从标准输入设备&#xff08;键盘&#xff09;读取数据&#xff0c;并…

Spring的执行流程 Bean的作用域与生命周期

目录 Bean的作用域 设置作用域 Spring的执行流程 Bean的生命周期 Bean的作用域 Bean的作用域是指, Bean在Spring框架中的某种行为模式 1.singleton 单例模式 singleton是Spring中的默认的Bean作用域,它表示在整个应用程序中只存在一个Bean实例,每 次请求该Bean实例时都会…

【光流法实现目标追踪:Python实战指南】

文章目录 概要一、目标追踪概述二、光流法进行目标追踪小结 概要 在当今计算机视觉领域&#xff0c;图像处理被广泛应用于多个关键领域&#xff0c;包括图像分类、目标检测、语义分割、实例分割和目标追踪。其中&#xff0c;图像分类和目标检测作为基础应用为其他高级领域奠定…

MPLS基础

1. MPLS原理与配置 MPLS基础 &#xff08;1&#xff09;MPLS概念 MPLS位于TCP/IP协议栈中的数据链路层和网络层之间&#xff0c;可以向所有网络层提供服务。 通过在数据链路层和网络层之间增加额外的MPLS头部&#xff0c;基于MPLS头部实现数据快速转发。 本课程仅介绍MPLS在…