zoukankan      html  css  js  c++  java
  • Redis的消息通知

    Redis的消息通知可以使用List类型的LPUSH和RPOP(左进右出),
    当然更方便的是直接使用Redis的Pub/Sub(发布/订阅)模式。

    1.使用List实现队列

    使用列表类型的LPUSH和RPOP命令(或者RPUSH和LPOP命令,右进左出)
    可以很方便的实现一个任务队列,但是需要设置定时去查询队列,
    并且可以使用对应的阻塞命令,LPUSH和BRPOP命令,可以实现后台接收消息的推送

    2.Pub/Sub 发布订阅模式

    Redis支持发布/订阅的模式,"发布/订阅"模式中包含两种角色,分别是发布者和订阅者。

    订阅者可以订阅一个或若干个频道(channel),发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都会收到此消息。

    但是需要注意一下,使用发布订阅模式实现的消息队列,当有客户端订阅channel后只能收到后续发布到该频道的消息,之前发送的不会缓存,必须Provider和Consumer同时在线。

    命令参数

    PUBLISH channel msg

    将信息 message 发送到指定的频道 channel 

    SUBSCRIBE channel [channel ...]

    订阅频道,可以同时订阅多个频道

    UNSUBSCRIBE [channel ...]

    取消订阅指定的频道, 如果不指定频道,则会取消订阅所有频道

    PSUBSCRIBE pattern [pattern ...]

    订阅一个或多个符合给定模式的频道,每个模式以 * 作为匹配符,比如 it* 匹配所有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类

    PUNSUBSCRIBE [pattern [pattern ...]]

    退订指定的规则, 如果没有参数则会退订所有规则

    PUBSUB subcommand [argument [argument ...]]

    查看订阅与发布系统状态

  • 相关阅读:
    POJ 3468 A Simple Problem with Integers
    BZOJ 4430 Guessing Camels
    POJ 2309 BST
    POJ 1990 MooFest
    cf 822B Crossword solving
    cf B. Black Square
    cf 828 A. Restaurant Tables
    Codefroces 822C Hacker, pack your bags!
    [HDU 2255] 奔小康赚大钱
    [BZOJ 1735] Muddy Fields
  • 原文地址:https://www.cnblogs.com/binyue/p/4763364.html
Copyright © 2011-2022 走看看