Python 实现
- 主要步骤:
- 导入 Redis 客户端库。
- 连接到 Redis 服务器。
- 定义订阅和退订函数,在订阅函数中创建
pubsub
对象并订阅指定频道,使用 listen
方法监听消息;在退订函数中通过 pubsub
对象退订频道。
- 核心代码:
import redis
def subscribe(redis_client, channel):
pubsub = redis_client.pubsub()
pubsub.subscribe(channel)
print(f"已订阅频道 {channel}")
for message in pubsub.listen():
if message['type'] =='message':
print(f"收到消息: {message['data']}")
def unsubscribe(redis_client, channel):
pubsub = redis_client.pubsub()
pubsub.unsubscribe(channel)
print(f"已退订频道 {channel}")
if __name__ == '__main__':
r = redis.Redis(host='localhost', port=6379, db=0)
channel_name = 'test_channel'
subscribe(r, channel_name)
# 如需退订,可调用如下代码
# unsubscribe(r, channel_name)
Java 实现
- 主要步骤:
- 导入 Redis 客户端库相关依赖。
- 创建 Redis 连接工厂并获取连接。
- 定义订阅和退订方法,订阅方法中创建
JedisPubSub
子类实例并使用 subscribe
方法订阅频道;退订方法使用 unsubscribe
方法退订频道。
- 核心代码:
import redis.clients.jedis.*;
import java.util.concurrent.TimeUnit;
public class RedisSubscriber {
private Jedis jedis;
public RedisSubscriber(String host, int port) {
jedis = new Jedis(host, port);
}
public void subscribe(String channel) {
JedisPubSub jedisPubSub = new JedisPubSub() {
@Override
public void onMessage(String channel, String message) {
System.out.println("收到消息: " + message);
}
};
jedis.subscribe(jedisPubSub, channel);
System.out.println("已订阅频道 " + channel);
}
public void unsubscribe(String channel) {
JedisPubSub jedisPubSub = new JedisPubSub() {};
jedis.unsubscribe(jedisPubSub, channel);
System.out.println("已退订频道 " + channel);
}
public static void main(String[] args) {
RedisSubscriber subscriber = new RedisSubscriber("localhost", 6379);
String channelName = "test_channel";
subscriber.subscribe(channelName);
// 如需退订,可调用如下代码
// subscriber.unsubscribe(channelName);
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
subscriber.jedis.close();
}
}