Redis队列

Redis实现任务队列 BRPOP

        BRPOP命令和RPOP命令相似,唯一的区别是当列表中没有元素时BRPOP命令会一直阻塞住连接,直到有新元素加入。

        BRPOP命令接收两个参数,第一个是键名,第二个是超时时间,单位是秒。当超过了此时间仍然没有获得新元素的话就会返回nil。上例中超时时间为"o",表示不限制等待的时间,即如果没有新元素加入列表就会永远阻塞下去。当获得一个元素后 BRPOP命令返回两个值,分别是键名和元素值。

        除了BRPOP命令外,Redis还提供了BLPOP,和 BRPOP的区别在与从队列取元素时BLPOP会从队列左边取。具体可以参照工POP理解。

redis-cli实例1 :输入 BRPOP开启等待:

redis-cli实例2:向testqueue中写入数据:

redis-cli实例1 :返回数据:

发布/订阅模式PUBLISH

        “发布/订阅”模式中包含两种角色,分别是发布者和订阅者。订阅者可以订阅一个或若干个频道(channel),而发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都会收到此消息。

        发布者发布消息的命令是 PUBLISH,用法是PUBLISH channel message,这样消息就发出去了。PUBLISH命令的返回值表示接收到这条消息的订阅者数量。如果没有客户端订阅channel则返回0。发出去的消息不会被持久化,也就是说当客户端订阅channel后只能收到后续发布到该频道的消息,之前发送的就收不到了。订阅频道的命令是SUBSCRIBE,可以同时订阅多个频道,用法是 SUBSCRIBEchannel [channel ...]

 redis-cli实例1 :用来订阅channelTest

        进入订阅状态后客户端可能收到3种类型的回复。每种类型的回复都包含3个值,第一个值是消息的类型,根据消息类型的不同,第二、三个值的含义也不同。消息类型可能的取值有以下3个。

(1) subscribe。表示订阅成功的反馈信息。第二个值是订阅成功的频道名称,第三个值是当前客户端订阅的频道数量。

(2) message。这个类型的回复是我们最关心的,它表示接收到的消息。第二个值表示产生消息的频道名称,第三个值是消息的内容。

(3) unsubscribe。表示成功取消订阅某个频道。第二个值是对应的频道名称,第三个值是当前客户端订阅的频道数量,当此值为0时客户端会退出订阅状态,之后就可以执行其他非“发布/订阅”模式的命令了。

 redis-cli实例2 :向channelTest写入一条消息,因为redis-cli实例1已经订阅,所以返回1

 redis-cli实例1:自动收到消息

 使用UNSUBSCRIBE命令可以取消订阅指定的频道,用法为UNSUBSCRIBE [ channel[ channel ...]],如果不指定频道则会取消订阅所有频道。

按照规则订阅SUBSCRIBE

除了可以使用SUBSCRIBE命令订阅指定名称的频道外,还可以使用PSUBSCRIBE命令订阅指定的规则。规则channel.?*可以匹配channel.1和channel.10,但不会匹配 channel.。

 redis-cli实例3:订阅channelTes?*

  redis-cli实例2:写入数据 返回2,因为 redis-cli1和  redis-cli3都订阅,因此发送两条

   redis-cli实例3:收到信息

 第一个值表示这条消息是通过PSUBSCRIBE命令订阅频道而收到的,第二个值表示订阅时使用的通配符,第三个值表示实际收到消息的频道命令,第四个值则是消息内容。

PUNSUBSCRIBE命令可以退订指定的规则,用法是 PUNSUBSCRIBE [pattern[pattern ...]],如果没有参数则会退订所有规则。

.NET Redis队列是一种在.NET应用程序中使用Redis作为队列存储的技术。Redis是一个开源的内存数据结构存储系统,它支持多种数据结构,包括字符串、列表、集合、哈希等。而.NET是一种广泛使用的开发框架,可以用于构建各种类型的应用程序。 .NET Redis队列的主要功能是实现消息的发布和订阅。发布者可以将消息发布到Redis队列中,而订阅者可以从队列中获取并处理这些消息。这种发布-订阅模式使得应用程序可以很方便地进行异步消息传递,提高了系统的响应性和可伸缩性。 .NET Redis队列具有以下几个特点: 1. 高性能:Redis作为内存存储系统,具有非常高的读写速度。它使用了类似于单线程的事件循环模型,可以处理大量并发请求。 2. 持久化:Redis支持将数据写入磁盘进行持久化,以防止系统故障导致数据丢失。这使得即使在应用程序重启后,之前发布的消息也能够被订阅者接收到。 3. 可靠性:Redis内置了一些容错机制,如主从复制和故障转移等。这些机制可以保证即使在某个Redis节点发生故障时,仍然能够提供连续的服务。 4. 多语言支持:Redis提供了多种编程语言的客户端库,包括.NET。这意味着使用.NET开发的应用程序可以方便地与Redis进行通信。 总之,.NET Redis队列是一种高性能、可靠且易于使用的消息传递机制。通过将Redis与.NET应用程序结合使用,可以实现高效的异步消息传递,并提升应用程序的性能和可扩展性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心寒丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值