• Redis系列(五):消息队列


    消息队列已经成为现在互联网服务端的标配组件,现在比较常用的消息中间件有RabbitMQ、Kafka、RocketMQ、ActiveMQ。说出来你可能不信,Redis作为一个缓存中间件,居然也提供了消息队列的功能。

    Redis提供的消息队列功能是发布/订阅模型,它引入了channel的概念,即订阅者订阅了某个channel,当有发布者往这个channel中发布消息,订阅者就能收到。这和读者订阅杂志的原理是一样的,读者相当于订阅者,一间杂志社会有多种杂志,当读者订阅了其中一种杂志后,每当杂志发售日,杂志社就会发布杂志,读者就能收到了。

    看一下Redis提供的命令

    • subscribe

    完整命令参数为subscribe channel [channel ...]

    订阅一个或多个channel

    127.0.0.1:6379> subscribe ch1
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "ch1"
    3) (integer) 1
    

    订阅名称为ch1的channel,成功后会停止在此界面,等待接收消息。结果的1、2、3分别表示行为、channel名称和结果,比如上面是订阅了ch1,1个订阅成功

    • publish

    完整命令参数为publish channel message

    向channel发布一条message的消息

    保持上面的例子的终端不要动,另外打开一个终端窗口,然后连接redis,执行以下的命令

    127.0.0.1:6379> publish ch1 Hello
    (integer) 1
    

    在新打开的终端发布向名称为ch1的channel发布一条内容为Hello的消息,成功后可以看到原来的终端界面收到了这条消息

    127.0.0.1:6379> subscribe ch1
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "ch1"
    3) (integer) 1
    1) "message"
    2) "ch1"
    3) "Hello"
    

    第一个1、2、3是订阅时返回的结果,第二个1、2、3是收到了消息,channel名为ch1,内容是Hello。

    • unsubscribe

    完整命令是unsubscribe [channel [channel ...]]

    退订指定的channel,channel是可选的,如果不指定channel,会退订所有的channel。

    • psubscribe

    完整命令参数为psubscribe pattern [pattern ...]

    订阅给定的模式

    这个命令和subscribe命令一样都是订阅,但这个参数是一个模式。这里的pattern支持以下三种方式:

    h?llo: 订阅hello、hallo和hxllo,意思是?代表一个字符

    h*llo:订阅hllo和heeeello,意思是*代表任意个字符

    h[ae]llo:订阅hello和hallo,但是不订阅hillo,意思是只能是[ ]内的一个字符,[ ]也支持[a-z]的写法,代表字母a到字母z的任意一个字符。

    如果使用过正则表达式就很容易理解。

    • punsubscribe

    完整命令参数为punsubscribe [pattern [pattern ...]]

    取消订阅给定的模式,不指定pattern表示取消所有的订阅。pattern参数的含义和psubscribe完全一致。

  • 相关阅读:
    十天冲刺---Day10
    十天冲刺---Day9
    团队博客目录
    【Beta阶段】M2事后分析
    【Beta阶段】展示博客
    【Beta阶段】测试报告
    【Beta阶段】发布说明
    【Beta阶段】团队源代码管理
    【Beta阶段】第十次Scrum Meeting!!!
    【Beta阶段】第九次Scrum Meeting!(论坛已成功上线)
  • 原文地址:https://www.cnblogs.com/spareyaya/p/12825866.html
Copyright © 2020-2023  润新知