📜  aioredis pubsub 示例 - Python (1)

📅  最后修改于: 2023-12-03 15:13:17.324000             🧑  作者: Mango

aioredis pubsub 示例 - Python

aioredis 是一个异步的 Redis 客户端库,pubsub 模块则提供了使用 Redis 发布/订阅功能的异步操作。在本示例中,我们将展示如何使用 aioredispubsub 模块来实现消息的发布和订阅。

import asyncio
import aioredis

# 创建一个异步的 Redis 连接
async def create_redis():
    redis = await aioredis.create_redis_pool('redis://localhost')
    return redis

# 异步函数,用于处理接收到的消息
async def handle_message(message):
    print(f"Received message: {message[1]}")

async def main():
    # 创建 Redis 连接
    redis = await create_redis()
    
    # 创建一个订阅者对象
    ps = redis.pubsub()
    
    # 订阅一个频道
    await ps.subscribe('channel')
    print("Subscribed to channel 'channel'")
    
    # 在一个独立的任务中处理接收到的消息
    asyncio.create_task(handle_message(await ps.get_message()))
    
    # 发布消息到频道
    await redis.publish('channel', 'Hello, world!')

    # 等待一段时间来处理接收到的消息
    await asyncio.sleep(1)

    # 取消订阅频道
    await ps.unsubscribe('channel')
    print("Unsubscribed from channel 'channel'")

    # 关闭 Redis 连接
    redis.close()
    await redis.wait_closed()

# 运行主函数
asyncio.run(main())

该示例演示了如何使用 aioredispubsub 模块进行发布/订阅。首先,我们创建一个异步的 Redis 连接,然后创建一个订阅者对象。在订阅频道后,我们使用独立的任务处理接收到的消息。然后,我们发布一条消息到频道,并等待一段时间以接收和处理消息。最后,我们取消订阅频道,关闭 Redis 连接。

请确保先安装 aioredis 库:

pip install aioredis

注意:在实际应用中,你可能需要将 Redis 连接的 URL、频道名称和处理消息的逻辑进行适当更改。