MST

星途 面试题库

面试题:缓存设计之Redis发布订阅在实时通知中的基础应用

在使用Redis发布订阅模式实现实时通知的场景中,假设我们有一个新闻发布系统,新闻发布者发布新闻后需要实时通知相关的订阅用户。请描述实现该功能的基本步骤,包括如何设置发布者、订阅者以及数据的传递等。
29.2万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试
  1. 设置发布者
    • 连接到Redis服务器。例如在Python中使用redis - py库,代码如下:
    import redis
    r = redis.Redis(host='localhost', port=6379, db = 0)
    
    • 当有新闻发布时,使用publish方法发布新闻消息到指定频道。假设频道名为news_channel,新闻内容为news_content,代码如下:
    r.publish('news_channel', news_content)
    
  2. 设置订阅者
    • 同样连接到Redis服务器,以Python为例:
    import redis
    r = redis.Redis(host='localhost', port=6379, db = 0)
    
    • 创建订阅对象并订阅指定频道,例如:
    p = r.pubsub()
    p.subscribe('news_channel')
    
    • 循环监听消息,获取并处理接收到的新闻消息:
    for message in p.listen():
        if message['type'] =='message':
            news = message['data']
            # 处理新闻,比如展示给用户等操作
            print(f"Received news: {news}")
    
  3. 数据传递
    • 发布者通过publish方法将新闻数据发送到指定的频道。
    • Redis服务器负责接收发布者的消息,并将其推送给所有订阅该频道的订阅者。
    • 订阅者通过listen方法监听频道,一旦有新消息,就会从消息队列中获取并进行相应处理。