Redis 的 SUBSCRIBE命令详解

 更新时间:2025年09月05日 14:36:22   作者:锅锅来了  
Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随小编一起看看吧

Redis 的 SUBSCRIBE 命令用于订阅一个或多个频道,以便接收发送到这些频道的消息。这是 Redis 实现发布/订阅(Pub/Sub)功能的核心命令之一。

基本语法

SUBSCRIBE channel [channel ...]
  • channel:要订阅的频道名称,可以同时指定多个频道

工作原理

  1. 当客户端执行 SUBSCRIBE 命令后,会进入订阅模式
  2. 之后客户端只能接收订阅相关的命令(如 SUBSCRIBEUNSUBSCRIBEPSUBSCRIBEPUNSUBSCRIBE
  3. 当有其他客户端通过 PUBLISH 命令向订阅的频道发送消息时,订阅者会收到这些消息

示例

  1. 首先,客户端1订阅 “news” 频道:
127.0.0.1:6379> SUBSCRIBE news
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "news"
3) (integer) 1
  1. 然后,客户端2向 “news” 频道发布消息:
127.0.0.1:6379> PUBLISH news "Breaking news: Redis is awesome!"
(integer) 1
  1. 此时客户端1会收到消息:
1) "message"
2) "news"
3) "Breaking news: Redis is awesome!"

消息格式

订阅者收到的消息是一个数组,包含三个元素:

  1. 消息类型:“message” 表示普通消息
  2. 消息来源的频道名称
  3. 实际的消息内容

相关命令

  • PUBLISH:向指定频道发送消息
  • UNSUBSCRIBE:取消订阅一个或多个频道
  • PSUBSCRIBE:订阅符合指定模式的频道(支持通配符 *
  • PUNSUBSCRIBE:取消订阅符合指定模式的频道

Python 示例

以下是使用 Python 的 redis 库实现订阅功能的示例:

import redis
import threading
def subscribe_to_channel(channel):
    r = redis.Redis(host='localhost', port=6379, db=0)
    pubsub = r.pubsub()
    pubsub.subscribe(channel)
    print(f"Subscribed to {channel} channel. Waiting for messages...")
    for message in pubsub.listen():
        if message['type'] == 'message':
            print(f"Received message: {message['data'].decode()} from channel: {message['channel'].decode()}")
# 启动订阅线程
thread = threading.Thread(target=subscribe_to_channel, args=('news',))
thread.start()

使用 SUBSCRIBE 命令可以轻松实现基于 Redis 的消息通知系统,适用于实时通信、事件通知等场景。

到此这篇关于Redis 的 SUBSCRIBE 命令的文章就介绍到这了,更多相关redis subscribe命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Redis中key过期策略的实现

    Redis中key过期策略的实现

    Key的过期机制是Redis保持高可用性的重要策略,过期策略分为惰性过期和定期过期,惰性过期在每次访问key时检查是否过期,定期过期则由serverCron方法定时清理过期key,本文就来详细的介绍一下,感兴趣的可以了解一下
    2024-09-09
  • Redis设置密码保护的实例讲解

    Redis设置密码保护的实例讲解

    今天小编就为大家分享一篇Redis设置密码保护的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • redis客户端实现高可用读写分离的方式详解

    redis客户端实现高可用读写分离的方式详解

    基于sentienl 获取和动态感知 master、slaves节点信息的变化,我们的读写分离客户端就能具备高可用+动态扩容感知能力了,接下来通过本文给大家分享redis客户端实现高可用读写分离的方式,感兴趣的朋友一起看看吧
    2021-07-07
  • 浅谈Redis中bind的坑

    浅谈Redis中bind的坑

    本文主要介绍了浅谈Redis中bind的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Go语言操作RediSearch进行搜索方法示例详解

    Go语言操作RediSearch进行搜索方法示例详解

    这篇文章主要为大家介绍了Go语言操作RediSearch进行搜索方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • redis-copy使用6379端口无法连接到Redis服务器的问题

    redis-copy使用6379端口无法连接到Redis服务器的问题

    这篇文章主要介绍了redis-copy使用6379端口无法连接到Redis服务器的问题的相关资料,需要的朋友可以参考下
    2023-05-05
  • 谈谈Redis分布式锁的正确实现方法

    谈谈Redis分布式锁的正确实现方法

    这篇文章主要给大家介绍了关于Redis分布式锁的正确实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Redis 缓存使用的热点Key问题的解决

    Redis 缓存使用的热点Key问题的解决

    Redis热点Key因高并发导致性能问题,可通过监控发现并利用本地缓存、分片、读写分离及限流熔断等策略分散压力,下面就来了解一下
    2025-05-05
  • 华为欧拉openEuler编译安装Redis的实现步骤

    华为欧拉openEuler编译安装Redis的实现步骤

    本文主要介绍了华为欧拉openEuler编译安装Redis的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Redis 数据类型Streams详解

    Redis 数据类型Streams详解

    Redis Streams是Redis 5.0新增的数据类型,提供了一种日志结构化数据存储方式,这种类型适合用于构建消息队列、事件日志和处理时间序列数据的应用,本文介绍Redis 数据类型Streams相关知识,感兴趣的朋友一起看看吧
    2024-10-10

最新评论