zoukankan      html  css  js  c++  java
  • Redis 发布与订阅

    Redis 提供的发布与订阅命令

    命令用例和描述
    SUBSCRIBE SUBSCRIBE channel [channel ...] —— 订阅给定的一个或多个频道
    UNSUBSCRIBE UNSUBSCRIBE [channel [channel ...]] —— 退订给定的频道,如果没有给定则退订所有
    PUBLISH PUBLISH channel message —— 向给定的频道发送消息
    PSUBSCRIBE PSUBSCRIBE pattern [pattern ...] —— 订阅与给定模式相匹配的所有频道
    PUNSUBSCRIBE PUNSUBSCRIBE [pattern [pattern ...]] —— 退订给定的模式,如果没有指定则退订所有

    Python 示例 :

    import time
    import threading
    import redis
    ​
    conn = redis.Redis()
    ​
    def publisher(n):
        time.sleep(1)
        for i in range(n):
            # 将消息发布到频道
            conn.publish('channel', i)
            time.sleep(1)
    ​
    def run_pubsub():
        threading.Thread(target=publisher, args=(3,)).start()
        pubsub = conn.pubsub()
        # 订阅频道
        pubsub.subscribe(['channel'])
        count = 0
        # 监听并打印消息
        for item in pubsub.listen():
            print(item)
            count += 1
            if count == 4:
                pubsub.unsubscribe()
            if count == 5:
                break
    ​
    ​
    run_pubsub()

    输出结果 :

    {'channel': b'channel', 'data': 1, 'type': 'subscribe', 'pattern': None}
    {'channel': b'channel', 'data': b'0', 'type': 'message', 'pattern': None}
    {'channel': b'channel', 'data': b'1', 'type': 'message', 'pattern': None}
    {'channel': b'channel', 'data': b'2', 'type': 'message', 'pattern': None}
    {'channel': b'channel', 'data': 0, 'type': 'unsubscribe', 'pattern': None}
  • 相关阅读:
    ES6解构赋值
    ES6中的Symbol类型
    两个列表合并成字典
    python关于列表转为字典的两个小方法
    break、continue和return的使用
    进度条的实现
    md5加密
    dict字典方法
    用户相关的文件、解析以及命令的使用
    linux的根目录
  • 原文地址:https://www.cnblogs.com/zawier/p/8530302.html
Copyright © 2011-2022 走看看