`
猫耳呀
  • 浏览: 165978 次
社区版块
存档分类
最新评论

Redis Stream应用案例

 
阅读更多

摘要: Redis Stream Redis最新的大版本5.0已经RC1了,其中最重要的Feature莫过于Redis Stream了,关于Redis Stream的基本使用介绍和设计理念可以看我之前的一篇文章(Redis Stream简介)。

Redis Stream

Redis最新的大版本5.0已经RC1了,其中最重要的Feature莫过于Redis Stream了,关于Redis Stream的基本使用介绍和设计理念可以看我之前的一篇文章(Redis Stream简介)。Redis Stream本质上是在Redis内核上(非Redis Module)实现的一个消息发布订阅功能组件。相比于现有的PUB/SUBBLOCKED LIST,其虽然也可以在简单的场景下作为消息队列来使用,但是Redis Stream无疑要完善很多。Redis Stream提供了消息的持久化和主备复制功能、新的RadixTree数据结构来支持更高效的内存使用和消息读取、甚至是类似于KafkaConsumer Group功能。今天我们重点关注怎么在实际业务场景下去使用Redis Stream

Redis Stream实战——IRC系统

相信大家对IRC都比较了解了(还记得被和谐掉的xx聊天室吗:-)),很多知名的开源项目(包括Redis)都有自己的IRC频道,方便开发者和使用者实时的进行思想火花的碰撞,我们今天介绍的主角——Redis Stream,本身就是起源于IRC中一个用户的idea。IRC的模型如下,

在某个IRC频道中的用户,既可以向所有的其他用户自由的发送消息,也可以接收其他所有用户发送的消息。如果要基于Redis来构建一个IRC系统,那我们不由自主的会想到使用Redis的PUB/SUB功能,

可以看到,基于PUB/SUB,只需要所有的用户(client)都订阅(subscribe)同一个IRC频道(channel1),就可以接收所有用户发出的消息了。发出消息时,只需使用发布命令(publish)命令即可。整个业务逻辑非常的清晰简单,这也是Redis强大和流行的重要原因——提供的功能和数据结构能尽可能提升开发者的开发效率。

但是基于PUB/SUB构建的IRC,有一个问题是PUB/SUB的消息模型是Fire and Forgot。也就是说Redis本身并不保存任何历史消息,如果IRC中某个用户的网络连接出现异常,重新加入IRC后,他是看不到断链期间的聊天记录的,新加入的用户同样也看不到最近一段时间的历史记录,这个对用户迅速的理解当前讨论的问题非常不便。此外,如果Redis发生了重启,所有的用户也需要重新订阅频道。

那如果基于Redis Stream来构建IRC呢?

  • 创建频道


  • 发送消息

  • 接收消息

  • 获取历史消息
    前面我们提到了,Redis StreamPUB/SUB相比,一个重要的区别是,Redis Stream可以获取历史发送的消息,所以当一个用户断开连接重新加入IRC时,可以通过如下方式获取历史消息:

Redis Stream实战——IoT数据采集

Redis除了强大而且丰富的数据结构支持,还有一个很重要的能力是跨平台,甚至是作为一个嵌入式的存储系统跑在基于ARM的平台上,比如作者之前就宣称,Redis成功的跑在了“树莓派”上。

试想一下,在IoT时代,会有无数随时随地可以接入互联网的智能设备,你家里的冰箱会实时的汇报,冰箱里面有哪些食物,数量多少,新鲜程度如何,空调会汇报现在温度多少,空气质量如何,你的车会不断的汇报发动机的各项数据,变速箱的各项数据,车内空气的各项数据。这么多的IoT设备会形成巨大的数据洪流,采集完成后在云端进行分析,产生巨大的用户价值。

这些数据虽然内容各个不同,但是都有一个共同的特点,都是一种时序数据。看到这里,你可能会突然发现,Redis Stream从设计初就是为了支持时间序列数据而生(见第一部分Redis Stream介绍),Redis又成功的跑在了ARM平台,而未来物联网会有万亿级的设备基于ARM平台。所以,我们不由自主的可以猜想,除了现在在各种互联网服务中作为Cache和KV存储广泛应用,Redis下一个大放异彩的领域也许就在物联网。

上面这个图,就是一个典型的物联网设备信息采集,分析,展示的架构。Redis作为一个嵌入式的存储系统跑在各个IoT设备上,各个设备使用Redis Stream暂存产生的时序数据,然后再异步的推送到云端。云上部署的各个业务程序,会读取推送的原始数据,基于一定的规则进行分析,然后将结果写入可靠的数据存储系统。用户读取结果,在APP或者web页面上进行展示,从而整个系统形成一个闭环。

作者简介

夏德军,花名夏周,阿里云Redis技术专家,负责阿里云Redis内核开发和维护。活跃于开源社区,Redis Contributor,设计并实现了阿里云Redis开源项目ApsaraCache的部分核心feature,如时间点恢复,binlog同步等。

原文链接

分享到:
评论

相关推荐

    redis使用例子

    在“测试使用redis”文件中,可能包含了一些更复杂的应用场景,比如使用Redis的列表、集合、哈希表、有序集合等功能,或者涉及发布/订阅模式的实现。Redis的列表可以用来实现消息队列,集合可以存储不重复的元素,...

    redis6.0 window版本

    Redis是一款开源、高性能的键值对存储系统,广泛应用于缓存、数据库和消息中间件等场景。本资源为Redis 6.0的Windows版本,针对Windows操作系统进行了编译,旨在解决用户在CSDN上寻找Redis Windows版本时需消耗积分...

    redis资料.zip

    此外,Redis Stream是 Redis 5.0 引入的新特性,用于构建复杂的消息处理系统。 在黑马程序员课程源代码.zip中,可能包含了实际编程示例,帮助读者理解如何在实际项目中应用Redis。而PPT-PDF文件则可能包含理论讲解...

    redis3.0.1加RedisDesktopManager

    9. **命令和模块支持**:3.0.1 版本可能添加或增强了某些 Redis 命令,如 GEO 模块用于地理位置操作,或者 Stream 数据类型,为实时数据流处理提供了支持。 10. **安全性**:Redis 3.0.1 可能包含了安全性的增强,...

    redis-6.2.12可执行安装包

    1. 安装多个Redis实例,每个实例运行在不同的端口上。 2. 使用`redis-trib.rb`工具配置集群,指定每个节点的角色和连接信息。 3. 启动集群,监控节点状态,确保所有节点都能正常通信。 4. 配置客户端连接集群,使用`...

    Redis数据库 v6.2.14.zip

    作为一款开源的、支持网络的、内存中的数据结构存储系统,Redis可以处理大量的读写操作,是现代Web应用和分布式系统中的重要组件。在“Redis数据库 v6.2.14.zip”这个压缩包中,包含的是Redis 6.2.14版本的源码和...

    RedisWindows安装文件5.0.10.rar

    1. **流(Streams)**:Redis 5.0引入了新的数据结构——Stream,它是一个有序的、可持久化的日志结构,支持多消费者模型,为实时数据处理提供了强大的工具。 2. **模块系统(Module System)**:Redis 5.0允许开发人员...

    redis-3.2.10.tar.gz

    在本案例中,我们讨论的是Redis的3.2.10版本,这个版本是Redis发展历史上的一个重要里程碑,引入了许多改进和新特性。 1. Redis简介: Redis作为一个开源、免费的键值存储系统,由意大利开发者Antonio Bertolli...

    Redis-x64-5.0.14.1.msi

    在 Windows 上,可以使用 `redis-cli.exe` 连接到本地或远程 Redis 实例。 10. **配置与优化**:Redis 可以通过配置文件 `redis.conf` 进行设置,包括内存限制、日志级别、持久化策略等。根据实际需求进行适当调整...

    Redis3.2的windows版本

    4. **Stream数据类型**:虽然Stream数据类型是在后续版本Redis 5.0中引入的,但在Redis 3.2中已经可以预览,它为Redis带来了类似日志流的处理能力,适用于消息队列和时间序列数据存储。 5. **Redis Sentinel**:...

    Redis Windows版64位 绿色免安装版

    Windows版的Redis是Redis在Windows操作系统上的实现,为开发者在Windows环境下开发和测试应用提供了便利。 标题"Redis Windows版64位 绿色免安装版"指的是Redis在Windows 64位操作系统上的一个特别版本,这个版本...

    laravel-streamer:基于Redis流的Laravel事件流包

    Laravel流光Streamer是... 确保您已运行Redis 5.0实例并且Laravel配置为使用它确保已安装。用法此程序包用法有两个主要目的-发出新事件和侦听事件。 发射需要更多的工作才能使用,例如创建自己的Event类,然后可以通过a

    redis3.0-window免安装

    Redis是世界上最受欢迎的开源内存数据结构存储系统,它作为一个高性能的键值数据库广泛应用于缓存、消息中间件、数据持久化等多个场景。本资源“redis3.0-window免安装”是专门为Windows操作系统设计的Redis 3.0版本...

    redis 3.2.1

    - **Stream 数据结构**: 尽管在 Redis 3.2 中 Stream 数据结构尚未完全实现,但这个版本为后续版本引入 Stream 做了基础准备。 3. **管理工具** - **Redis Desktop Manager**: 包含的 `redis-desktop-manager-0.9...

    redis 安装工具包,连接工具及全套文档教程

    - **图形界面工具**:如`Redis Desktop Manager`,提供跨平台的图形界面,方便可视化管理Redis实例。 3. **Java连接Redis**: - **Jedis**:Java社区广泛使用的Redis客户端,支持各种Redis命令,适合简单的键值...

    Redis3.0集群与应用.zip

    Redis 3.0 集群与应用是关于如何配置、管理和使用Redis分布式数据库系统的一个教程,旨在提供简单明了的指导。Redis是一款高性能的键值存储服务,常用于数据库缓存、消息队列等场景。在3.0版本中,引入了集群功能,...

    redis,版本是5.0.4

    6. **Stream数据结构**:自Redis 5.0开始,新增了Stream数据类型,它是日志和消息传递的核心,支持时间戳和多字段的数据结构,可以用于构建复杂的消息队列和事件驱动的应用。 7. **模块系统**:Redis 5.0.4引入了...

    redis工具.rar

    在本文中,我们将深入探讨Redis数据库服务及其3.2.1版本的特点,同时也会介绍如何使用可视化管理工具来操作Redis实例。 首先,Redis 3.2.1是一个稳定版本,它在性能、稳定性和新特性方面都有显著提升。这个版本引入...

    Redis+Jedis+案例实战(高清视频教程).rar

    - Stream:学习Redis 5.0引入的Stream数据类型,用于构建复杂的数据流处理和日志聚合。 5. 性能优化与最佳实践: - 应用配置:了解如何根据实际需求调整Redis配置,如内存管理、网络优化等。 - 安全性:学习如何...

    Java实现Redis的消息订阅和发布

    然而,对于大型高并发系统,可能需要考虑使用Redis的Stream或更专业的消息队列系统如RabbitMQ、Kafka等。 总之,Java和Redis的结合为开发者提供了强大的工具来构建高效、可扩展的分布式系统。通过熟练掌握Redis的...

Global site tag (gtag.js) - Google Analytics