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(发布/订阅)功能的运用,以及如何在实际项目中实现这一特性。 首先,发布/订阅是一种消息传递模式,允许发送者(Publisher)向多个接收者(Subscriber)广播消息,而无需...
3. 高级特性:如事务(Transactions)、管道(Pipelining)、脚本执行(Lua Scripting)和发布/订阅(Publish/Subscribe)。 4. 持久化操作:支持RDB和AOF两种Redis持久化方式。 5. 主从复制:可以处理主库和从库...
在Java应用中,Jedis允许开发者执行Redis的各种命令,如设置和获取字符串、处理哈希表、列表、集合、有序集合、发布订阅消息、事务处理以及GeoSpatial操作等。Jedis不仅支持基本的数据操作,还提供了连接池管理,...
Jedis全面支持Redis的所有基础命令,如字符串操作(GET、SET、INCR)、哈希表(HSET、HGETALL)、列表(LPUSH、LPOP)、集合(SADD、SMEMBERS)、有序集合(ZADD、ZRANGE)等,以及事务(MULTI、EXEC)、发布订阅...
- 支持发布者和订阅者模式,通过`subscribe()`和`publish()`方法,应用可以实现消息的实时传递。 5. **脚本支持(Lua)**: - Jedis可以通过`eval()`和`evalsha()`方法执行Redis服务器上的Lua脚本,这有助于执行...
4. **发布/订阅**:Jedis提供了`subscribe()`和`publish()`方法,用于实现Redis的消息发布与订阅功能,从而构建基于消息的分布式系统。 5. **Pipeline**:为了提高性能,Jedis提供了管道模式,允许一次性发送多条...
- 发布/订阅:使用`subscribe`和`publish`方法实现消息订阅和发布功能,实现基于Redis的消息传递。 - 管道:通过`pipelining`,可以在一个网络往返过程中发送多个命令,提高性能。 - Lua脚本:Jedis支持在客户端...
在2.7.0版本中,Jedis提供了丰富的API,支持了Redis的多种数据结构和操作,包括字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)以及发布/订阅(Publish/Subscribe)等功能。...
4. **发布/订阅**:Jedis也支持Redis的消息发布/订阅功能,通过`subscribe`和`publish`方法实现。这在构建实时系统或者分布式事件驱动架构时非常有用。 5. **Lua脚本**:Redis支持在服务器端执行Lua脚本,Jedis提供...
`subscribe`和`publish`是实现这一功能的关键命令。 在提供的`TestRedis.java`和`RedisUtils.java`文件中,可能会包含这些数据类型的操作示例以及如何使用Jedis连接池的方法。例如,`TestRedis.java`可能包含测试...
其中一个重要的特性就是发布/订阅(Publish/Subscribe,简称Pub/Sub)模式,它允许消息的发布者与订阅者进行异步通信,而无需直接互相了解对方。这个特性广泛用于构建实时消息传递系统、通知服务或者作为后台任务的...
4. **发布/订阅**:Jedis支持Redis的发布/订阅(Publish/Subscribe)模式,允许实现消息广播和监听。`subscribe`和`unsubscribe`方法用于订阅和退订频道,`publish`方法则用于发送消息。 5. **脚本支持**:Jedis ...
5. **发布/订阅(Publish/Subscribe)**:Jedis提供了`publish`和`subscribe`接口,可以实现消息的发布和订阅,构建实时通信系统。 6. **脚本(Scripting)**:支持使用Lua脚本在服务器端执行复杂逻辑,通过`eval`...
4. **发布订阅**:支持发布(publish)和订阅(subscribe)模式,使得Redis可以作为简单的消息中间件。 5. **连接池**:为了提高性能和资源管理,Jedis提供了连接池功能,如JedisPool,方便开发者复用连接,避免频繁...
2. **命令支持**:Jedis全面支持Redis的各种命令,包括基本的数据操作(如GET、SET、DEL)、事务(MULTI、EXEC)、发布订阅(PUBLISH、SUBSCRIBE)、持久化操作(SAVE、BGSAVE)等。 3. **pipeline与事务**:Jedis...
在Redis中,发布/订阅(Publish/Subscribe,简称Pub/Sub)是一种消息通信模式,它允许消息生产者(发布者)发送消息到一个频道,而多个消息消费者(订阅者)可以实时接收这些消息。这个功能在分布式系统中尤其有用,...
Publish/Subscribe Persistence control commands Remote server control commands Connection pooling Sharding (MD5, MurmurHash) Key-tags for sharding Sharding with pipelining Scripting with pipelining
`subscribe`和`unsubscribe`方法用于订阅和退订,`publish`用于发送消息到指定频道。 6. **管道(Pipeline)**:Jedis通过管道技术可以批量发送命令,提高效率。通过创建`Pipeline`对象,可以连续调用多个命令,...
- **发布/订阅**:通过PUBLISH和SUBSCRIBE命令,实现消息的发布和订阅,构建简单的消息系统。 - **管道处理**:Pipeline允许一次性发送多条命令到Redis,减少网络往返次数,提升性能。 - **主从复制**:支持...
- PUBLISH/SUBSCRIBE:实现发布订阅功能,用于消息传递。 3. **Redis持久化** - RDB:定期全量备份,数据恢复快速,但可能导致部分数据丢失。 - AOF:记录每次写操作,数据完整,恢复速度相对较慢,可配置同步...