`

redis 发布和订阅

 
阅读更多

 

 

 

发布:publish
例:publish mychannel hello2015
返回值是0表示没有订阅者
返回值是1表示已经有了订阅者

订阅:subscribe
例:subscribe mychannel [.....]
返回值是三个:
1) "message"  固定写法
2) "channel"  固定写法
3) "发布者发布的信息"

取消订阅:unsubscribe
例:unsubscribe [channel]

按照规则订阅:psubscribe
例:psubscribe channel?    能匹配channel1 等的的发布者

按照规则取消订阅:punsubscribe
注意:使用punsubscribe命令只能退订通过psubscribe 订阅的规则,不能退订直接通过subscribe 订阅的规则。


 

可以使用这个 发布 订阅功能,实现网站信息推送给订阅者功能,大概代码如下:

package bj.zm.redis;

import org.junit.Test;

import redis.clients.jedis.Jedis;
/**
 * 发布功能
 * @author Administrator
 *
 */
public class TestPub {
	/**
	 * 发布消息
	 */
	@Test
	public void test(){
		Jedis jedis = new Jedis("192.168.1.110", 6379);
		jedis.publish("zmchannel", "hello 2015");
		
	}

}





订阅功能:


package cn.crxy.redis.test;

import java.util.Set;

import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;
/**
 * 订阅功能
 * @author Administrator
 *
 */
public class TestSub {
	@Test
	public void test(){
		Jedis jedis = new Jedis("192.168.1.170", 6379);
		final Jedis jedis2 = new Jedis("192.168.1.170", 6379);
		JedisPubSub jedisPubSub = new JedisPubSub() {
			
			@Override
			public void onUnsubscribe(String channel, int subscribedChannels) {
				System.out.println("取消订阅");
			}
			
			@Override
			public void onSubscribe(String channel, int subscribedChannels) {
				System.out.println("订阅成功");
			}
			
			@Override
			public void onPUnsubscribe(String pattern, int subscribedChannels) {
				
			}
			
			@Override
			public void onPSubscribe(String pattern, int subscribedChannels) {
				
			}
			
			@Override
			public void onPMessage(String pattern, String channel, String message) {
				
			}
			
			@Override
			public void onMessage(String channel, String message) {
				/*if(message.equals("quit")){
					this.unsubscribe();
				}*/
				Set<String> set = jedis2.smembers("set");
				/**
				 * Email.sendil(set,message);
				 */
				System.out.println(message);
			}
		};
		jedis.subscribe(jedisPubSub , "crxy");
		
	}

}

 

 

分享到:
评论

相关推荐

    Java实现Redis的消息订阅和发布

    本篇文章将深入探讨如何使用Java来实现Redis的消息订阅和发布功能,这在分布式系统和实时数据处理中非常关键。 首先,理解Redis的发布/订阅(Pub/Sub)模式是至关重要的。在这一模式下,Redis服务器作为消息的中间...

    C# Redis发布与订阅系统源码

    本项目提供了一个基于C#的Redis发布与订阅(Publish/Subscribe)系统的源码,帮助开发者了解如何在Windows Forms(Winform)应用中实现这一功能。 首先,我们需要了解Redis的发布/订阅模式。在这个模式下,发送者...

    C# Redis发布订阅Demo

    综上所述,C# Redis发布订阅Demo涵盖了Redis Pub/Sub机制的使用以及Key过期通知的处理。通过这个Demo,开发者可以学习到如何在C#应用中利用Redis进行实时数据通信和监控,这对于构建分布式系统和实时应用非常有价值...

    Redis 发布订阅 Demo

    **Redis发布订阅模式详解** Redis 是一款高性能的键值存储系统,它支持多种数据结构,如字符串、哈希、列表、集合和有序集合等。在实际应用中,Redis 不仅可以作为缓存服务,还提供了丰富的消息通信机制,其中之一...

    redis发布订阅小案例

    在这个“redis发布订阅小案例”中,我们将探讨如何使用Java来实现Redis的发布订阅功能。首先,我们需要引入Jedis库,这是Java操作Redis的常用客户端库。确保在项目中已经添加了Jedis的依赖,例如通过Maven或Gradle。...

    基于muduo网络库的集群聊天服务器和客户端源码,使用nginx tcp负载均衡,mysql数据库,redis发布-订阅.zip

    基于muduo网络库的集群聊天服务器和客户端源码,使用nginx tcp负载均衡,mysql数据库,redis发布-订阅数据库,redis发布-订阅 基于muduo网络库的集群聊天服务器和客户端源码,使用nginx tcp负载均衡,mysql数据库,...

    基于netcore 3.0的redis发布订阅示例代码

    以下是一个简单的.NET Core 3.0应用,展示了如何使用StackExchange.Redis创建发布者和订阅者。 1. 创建发布者(Publisher) ```csharp using StackExchange.Redis; using System; class Program { static void ...

    Redis发布订阅.net实现

    标题"Redis发布订阅.net实现"所涉及的关键知识点包括: 1. Redis的发布订阅机制: 发布订阅模式在Redis中由`PUBLISH`和`SUBSCRIBE`命令支持。发布者通过`PUBLISH`命令将消息发送到一个特定的频道,而订阅者则通过`...

    redis绑定webSocket发布订阅连接推送

    在“redis绑定webSocket发布订阅连接推送”的场景中,服务器端会通过Redis的发布功能向特定的频道发布消息,这些消息通常包含了任务的进度、成功数量和失败数量。而前端Web客户端通过WebSocket与服务器保持连接,...

    redis订阅与发布.zip

    标题 "redispubandsub订阅预发布" 指的是 Redis 的 Pub/Sub 功能,包括发布(Publish)和订阅(Subscribe)两个主要操作。发布者通过 `PUBLISH` 命令向指定频道发送消息,而订阅者通过 `SUBSCRIBE` 或 `PSUBSCRIBE` ...

    redis订阅,redis发布

    综上所述,Redis 的订阅和发布功能提供了轻量级的消息传递机制,适用于实时数据同步和事件传播。结合本地 Redis 服务,开发者可以在本地快速搭建和测试相关的应用场景,从而提高开发效率。通过选择适合的编程语言...

    QT实现redis订阅发布功能

    由于Redis操作可能涉及网络延迟,推荐使用异步方式处理订阅和发布,避免阻塞主线程。你可以使用Qt的信号和槽机制,当接收到新消息时发射信号,由其他对象响应处理。 7. **错误处理**: 对于可能出现的网络错误或...

    SpringBoot + Redis实现事件的发布订阅功能

    本话题主要探讨如何利用SpringBoot和Redis实现事件的发布订阅功能,这对于实现分布式系统中的异步通信和解耦至关重要。 首先,我们需要理解SpringBoot的核心特性。SpringBoot是Spring框架的一个简化版本,它旨在...

    .net core如何使用Redis发布订阅

    接下来,详细介绍一下.NET Core中使用StackExchange.Redis进行Redis发布订阅的具体步骤和代码示例: 1. 安装StackExchange.Redis库 要在.NET Core项目中使用StackExchange.Redis,需要先通过NuGet包管理器安装该库...

    Redis发布订阅SignalR即时通讯.rar

    本案例包含redis的发布订阅功能,以及dotnet core+SignalR实现的简单即时通信,并提供文档笔记。本案例初衷是想结合redis的发布订阅功能+websocket实现消息客户端页面订阅指定的消息,并在客户端页面进行显示;

    基于Java环境下的Redis发布订阅的设计与实现.pdf

    基于Java环境下的Redis发布订阅设计与实现 本文研究了基于Java环境下的Redis发布订阅设计与实现,以满足实时聊天系统、微博以及分布式架构等应用对数据通信中间件的需求。Redis的发布订阅功能可以实现实时通信、...

    Redis在Delphi7下使用,支持发布、订阅等

    `uTerminalFrm`可能是一个用户界面,用于显示和交互Redis操作,如发布消息、订阅频道等。`.ddp`是Delphi工程的项目文件,`.dfm`包含表单的布局信息,而`.pas`则包含对应的源代码。 3. NsyRedis.dof 和 RedisClient....

    可以工作在nginx tcp负载均衡环境中的集群聊天服务器和客户端源码,使用了redis发布订阅消息队列.zip

    可以工作在nginx tcp负载均衡环境中的集群聊天服务器和客户端源码 基于nuduo库实现 使用了redis发布订阅消息队列 数据库采用MySQL 可以工作在nginx tcp负载均衡环境中的集群聊天服务器和客户端源码 基于nuduo库实现 ...

    redis订阅发布实现websocket集群.zip

    在SpringBoot中,这些通常包括实现`WebSocketMessageHandler`的类,以及处理订阅、取消订阅和接收到的消息的方法。 总的来说,这个项目展示了如何利用SpringBoot的WebSocket支持和Redis的发布/订阅功能来构建一个高...

    redis订阅机制简单的使用方法

    redis订阅机制,一方面推送消息,另一方面同时接收消息。

Global site tag (gtag.js) - Google Analytics