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}
  • 相关阅读:
    【NYOJ】[22]素数求和问题
    【NYOJ】[13]Fibonacci数
    【NYOJ】[13]Fibonacci数
    【CodeForces】[606A]Magic Spheres
    【CodeForces】[606A]Magic Spheres
    【杭电】[1201]18岁生日
    【杭电】[1201]18岁生日
    【杭电】[1994]利息计算
    【杭电】[1994]利息计算
    新型量子云装置问世 让你免费体验量子计算机
  • 原文地址:https://www.cnblogs.com/zawier/p/8530302.html
Copyright © 2011-2022 走看看