您的位置:首页 > 娱乐 > 八卦 > 企业服务公司起名_深圳建站模板_免费建站哪个网站最好_淄博头条新闻今天

企业服务公司起名_深圳建站模板_免费建站哪个网站最好_淄博头条新闻今天

2025/1/6 7:08:12 来源:https://blog.csdn.net/qq_38196449/article/details/144879857  浏览:    关键词:企业服务公司起名_深圳建站模板_免费建站哪个网站最好_淄博头条新闻今天
企业服务公司起名_深圳建站模板_免费建站哪个网站最好_淄博头条新闻今天

目录

一、pub/sub方式

1.1 优缺点

1.2 用法

二、stream方式

2.1 stream介绍

2.2 实现原理


一、pub/sub方式

Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。

(在 Stream 推出之后,越来越多人会采用 Stream 来实现这样的功能了。)

即在Redis中定义频道,客户端可以订阅一个或多个频道并接收它们所发布的消息。发布者向一个或多个频道发布消息,所有订阅该频道的客户端都会收到该消息。

Redis的发布/订阅模式一般用于实时消息传递和事件驱动的应用程序中,例如:

  1. 即时通讯:发布/订阅模式可以用于实现即时消息传递应用程序,例如聊天室或社交媒体应用程序。订阅者可以订阅特定频道以接收他们感兴趣的消息,并能够实时更新。

  2. 日志处理:发布/订阅模式可以用于日志处理应用程序,例如日志聚合或日志监控系统。订阅者可以订阅特定频道以接收他们感兴趣的日志消息,例如错误或异常消息,并能够实时更新。

  3. 实时数据更新:发布/订阅模式可以用于实时数据更新应用程序,例如股票市场或在线游戏。订阅者可以订阅特定频道以接收他们感兴趣的实时数据更新,并能够实时更新。

  4. 缓存刷新:发布/订阅模式可以用于缓存刷新应用程序,例如缓存的数据过期时自动更新。当数据被更新时,发布者将消息发布到特定频道,订阅者将接收到消息并更新其本地缓存。

1.1 优缺点

Redis的发布/订阅模式有以下优点和缺点:

优点:

  1. 实时性高:发布/订阅模式可以实现实时消息传递,能够提高应用程序的实时性和响应速度。
  2. 灵活性高:发布/订阅模式可以根据需要订阅特定频道,订阅者只会接收他们感兴趣的消息,从而提高了灵活性。
  3. 可扩展性高:发布/订阅模式能够支持多个订阅者同时订阅特定频道,从而提高了可扩展性。

缺点:

  1. 可靠性低:发布/订阅模式是一种异步通信方式,发布者不会等待订阅者接收到消息,因此消息的可靠性可能会受到影响。
  2. 可靠性难以保证:发布/订阅模式在传输过程中可能会出现消息丢失的情况,尤其是在高负载情况下。
  3. 不适合高频次的请求:在高频次的请求场景下,发布/订阅模式可能会对性能造成影响,因为每个订阅者都需要对每个发布的消息进行处理。

1.2 用法

创建并发布消息到一个 Redis 频道:

redis-cli> PUBLISH channel1 "Hello, world!"

客户端订阅频道的消息:

redis-cli> SUBSCRIBE channel1

订阅后,客户端将一直保持订阅状态,直到手动取消订阅或连接断开。

可以通过在不同的客户端上运行相同的订阅命令来实现多个订阅者,它们都会接收到频道中发布的消息。

Redis 发布/订阅模式是异步的,即发布者不会等待订阅者接收到消息。此外,Redis 还提供了许多其他功能,例如模式匹配和阻阻塞订阅等。

二、stream方式

2.1 stream介绍

Redis Stream 是 Redis 5.0 版本新增加的数据结构,主要用于处理有序的、可追溯的消息流。

Stream 数据结构可以被视为一个日志或消息队列,其中每个消息都有一个唯一的 ID,并且按照添加的顺序进行排序。开发人员可以向 Stream 中添加消息、读取消息、删除消息以及订阅消息。Stream 数据结构还支持消费者组,可以让多个消费者并发地处理消息流。

在 Redis 5.0 之前,通过 Redis 的发布订阅 (pub/sub) 可以实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。

而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。

它的特点是支持持久化、消息具有有序性,并且支持分组。主要可以用来做消息队列、日志收集、实时数据处理和聊天室应用等。

  • 有序性:消息可以按照发布时间排序,消费者可以按照消息发布时间的顺序进行消费。
  • 多消费者支持:多个消费者可以订阅同一个 Stream 并独立消费消息,支持竞争式消费和共享式消费两种消费模式。
  • 持久化:Stream 支持消息持久化,即使 Redis 服务器重启或崩溃,之前的消息仍然可以恢复。
  • 消息分组:Stream 支持消息分组功能,可以将消息分配到不同的消费组中,从而实现更灵活的消息消费。

2.2 实现原理

Stream底层采用了类似于日志的数据结构,每个Stream都是由一个或多个日志实现的。每个日志包含多个消息,每个消息包含一个唯一的ID和一些附加的字段,如消息体、时间戳等。

当一个消息被发布到Stream中时,它将被写入Stream日志中,每个消息都有一个唯一的ID和一些可选的字段,如时间戳、消息体等。消息ID是自动分配的,可以使用自然数或UUID作为ID。

当一个消费者订阅了一个Stream并开始消费消息时,它可以使用XREAD命令从Stream中读取消息。消费者可以使用XGROUP命令将自己加入到一个消费组中,并使用XREADGROUP命令从该组中读取消息。消费者可以使用XACK命令来确认已经消费的消息,避免消息被重复消费。

他还支持消息分组的功能,当一个消费组被创建时,它将与一个Stream相关联,并包含一个消费组名称和一个偏移量。消费组可以有多个消费者,消费者可以独立地从Stream中读取消息。当一个消费者开始消费消息时,它将记录当前的消费偏移量,并在处理完所有消息后将其更新到消费组中。消费组可以使用XPENDING命令查找未确认的消息,从而处理消息的超时和未确认情况。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com