`
cjx186
  • 浏览: 272102 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jedis实现订阅发布-publish/subscribe

 
阅读更多
 

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;

public class RedisTest {
	public static void main(String[] args) {
		Jedis jedis1 = new Jedis("10.7.13.43");
		Jedis jedis2 = new Jedis("10.7.13.43");
		Publisher pub = new Publisher();
		pub.publish(jedis1); //发布一个频道  
		Subscriber sub = new Subscriber();
		//sub.psub(jedis2, new JedisPubSubListener()); // 订阅一个频道  
	}
}

class Publisher {
	public void publish(final Jedis redisClient) {
		new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					Thread.currentThread().sleep(2000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				System.out.println("发布:news.share");
				redisClient.publish("roban:test:channel", "ok");
				redisClient.publish("roban:test:channel", "hello --word");
			}
		}).start();
	}
}

class Subscriber {
	public void psub(final Jedis redisClient, final JedisPubSubListener listener) {
		new Thread(new Runnable() {
			@Override
			public void run() {
				System.out.println("订阅:news.share");
				// 订阅得到信息在lister的onMessage(...)方法中进行处理  
				// 订阅多个频道  
				// redisClient.subscribe(listener, "news.share", "news.log");  
				//redisClient.subscribe(listener, new String[]{"news.share","news.log"});  
				redisClient.subscribe(listener, new String[] { "roban:test:channel" });// 使用模式匹配的方式设置频道  
			}
		}).start();
	}
}

class JedisPubSubListener extends JedisPubSub {

	@Override
	public void onMessage(String channel, String message) {
		System.out.println(channel + "=" + message);
	}

	@Override
	public void onPMessage(String pattern, String channel, String message) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onSubscribe(String channel, int subscribedChannels) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onUnsubscribe(String channel, int subscribedChannels) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onPUnsubscribe(String pattern, int subscribedChannels) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onPSubscribe(String pattern, int subscribedChannels) {
		// TODO Auto-generated method stub

	}

}
分享到:
评论

相关推荐

    Jedis的Publish/Subscribe功能的运用

    本文将深入探讨Jedis的Publish/Subscribe(发布/订阅)功能的运用,以及如何在实际项目中实现这一特性。 首先,发布/订阅是一种消息传递模式,允许发送者(Publisher)向多个接收者(Subscriber)广播消息,而无需...

    jedis-jedis-3.6.0-rc1.tar.gz

    3. 高级特性:如事务(Transactions)、管道(Pipelining)、脚本执行(Lua Scripting)和发布/订阅(Publish/Subscribe)。 4. 持久化操作:支持RDB和AOF两种Redis持久化方式。 5. 主从复制:可以处理主库和从库...

    jedis-jedis-1.5.0-RC2.tar.gz

    在Java应用中,Jedis允许开发者执行Redis的各种命令,如设置和获取字符串、处理哈希表、列表、集合、有序集合、发布订阅消息、事务处理以及GeoSpatial操作等。Jedis不仅支持基本的数据操作,还提供了连接池管理,...

    jedis-jedis-2.10.0-m1.tar.gz

    Jedis全面支持Redis的所有基础命令,如字符串操作(GET、SET、INCR)、哈希表(HSET、HGETALL)、列表(LPUSH、LPOP)、集合(SADD、SMEMBERS)、有序集合(ZADD、ZRANGE)等,以及事务(MULTI、EXEC)、发布订阅...

    jedis-jedis-2.10.0-m1.zip

    - 支持发布者和订阅者模式,通过`subscribe()`和`publish()`方法,应用可以实现消息的实时传递。 5. **脚本支持(Lua)**: - Jedis可以通过`eval()`和`evalsha()`方法执行Redis服务器上的Lua脚本,这有助于执行...

    jedis-jedis-2.7.2

    4. **发布/订阅**:Jedis提供了`subscribe()`和`publish()`方法,用于实现Redis的消息发布与订阅功能,从而构建基于消息的分布式系统。 5. **Pipeline**:为了提高性能,Jedis提供了管道模式,允许一次性发送多条...

    jedis-jedis-3.2.0.zip

    - 发布/订阅:使用`subscribe`和`publish`方法实现消息订阅和发布功能,实现基于Redis的消息传递。 - 管道:通过`pipelining`,可以在一个网络往返过程中发送多个命令,提高性能。 - Lua脚本:Jedis支持在客户端...

    jedis-jedis-2.7.0.zip

    在2.7.0版本中,Jedis提供了丰富的API,支持了Redis的多种数据结构和操作,包括字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)以及发布/订阅(Publish/Subscribe)等功能。...

    jedis-2.9.0.jar

    4. **发布/订阅**:Jedis也支持Redis的消息发布/订阅功能,通过`subscribe`和`publish`方法实现。这在构建实时系统或者分布式事件驱动架构时非常有用。 5. **Lua脚本**:Redis支持在服务器端执行Lua脚本,Jedis提供...

    Jedis2.8Demo文件-从数据类型到订阅部分

    `subscribe`和`publish`是实现这一功能的关键命令。 在提供的`TestRedis.java`和`RedisUtils.java`文件中,可能会包含这些数据类型的操作示例以及如何使用Jedis连接池的方法。例如,`TestRedis.java`可能包含测试...

    Redis中使用Java代码的方式实现发布订阅流程-订阅者示例代码.zip

    其中一个重要的特性就是发布/订阅(Publish/Subscribe,简称Pub/Sub)模式,它允许消息的发布者与订阅者进行异步通信,而无需直接互相了解对方。这个特性广泛用于构建实时消息传递系统、通知服务或者作为后台任务的...

    jedis-jedis-2.4.0.zip

    4. **发布/订阅**:Jedis支持Redis的发布/订阅(Publish/Subscribe)模式,允许实现消息广播和监听。`subscribe`和`unsubscribe`方法用于订阅和退订频道,`publish`方法则用于发送消息。 5. **脚本支持**:Jedis ...

    jedis-jedis-2.4.0.tar.gz

    5. **发布/订阅(Publish/Subscribe)**:Jedis提供了`publish`和`subscribe`接口,可以实现消息的发布和订阅,构建实时通信系统。 6. **脚本(Scripting)**:支持使用Lua脚本在服务器端执行复杂逻辑,通过`eval`...

    jedis-jedis-1.3.0.zip

    4. **发布订阅**:支持发布(publish)和订阅(subscribe)模式,使得Redis可以作为简单的消息中间件。 5. **连接池**:为了提高性能和资源管理,Jedis提供了连接池功能,如JedisPool,方便开发者复用连接,避免频繁...

    jedis-jedis-3.5.1.zip

    2. **命令支持**:Jedis全面支持Redis的各种命令,包括基本的数据操作(如GET、SET、DEL)、事务(MULTI、EXEC)、发布订阅(PUBLISH、SUBSCRIBE)、持久化操作(SAVE、BGSAVE)等。 3. **pipeline与事务**:Jedis...

    Redis中使用Java代码的方式实现发布订阅流程-发布者示例代码.zip

    在Redis中,发布/订阅(Publish/Subscribe,简称Pub/Sub)是一种消息通信模式,它允许消息生产者(发布者)发送消息到一个频道,而多个消息消费者(订阅者)可以实时接收这些消息。这个功能在分布式系统中尤其有用,...

    jedis-2.5.1.jar

    Publish/Subscribe Persistence control commands Remote server control commands Connection pooling Sharding (MD5, MurmurHash) Key-tags for sharding Sharding with pipelining Scripting with pipelining

    jedis-jedis-1.3.1.tar.gz

    `subscribe`和`unsubscribe`方法用于订阅和退订,`publish`用于发送消息到指定频道。 6. **管道(Pipeline)**:Jedis通过管道技术可以批量发送命令,提高效率。通过创建`Pipeline`对象,可以连续调用多个命令,...

    jedis-jedis-2.9.1.zip

    - **发布/订阅**:通过PUBLISH和SUBSCRIBE命令,实现消息的发布和订阅,构建简单的消息系统。 - **管道处理**:Pipeline允许一次性发送多条命令到Redis,减少网络往返次数,提升性能。 - **主从复制**:支持...

    java面试——Redis面试专题.zip

    - PUBLISH/SUBSCRIBE:实现发布订阅功能,用于消息传递。 3. **Redis持久化** - RDB:定期全量备份,数据恢复快速,但可能导致部分数据丢失。 - AOF:记录每次写操作,数据完整,恢复速度相对较慢,可配置同步...

Global site tag (gtag.js) - Google Analytics