Java 用 redis 实现订阅消费
时间: 2023-08-24 16:06:02 浏览: 126
Java 可以使用 Jedis 或者 Redisson 等 Redis 客户端来实现订阅消费。
Jedis 是 Redis 的 Java 客户端之一,可以通过以下方式来实现订阅消费:
1. 创建 JedisPool 对象,连接 Redis 服务器:
```java
JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
```
2. 创建 Jedis 对象:
```java
Jedis jedis = pool.getResource();
```
3. 订阅指定频道:
```java
JedisPubSub jedisPubSub = new JedisPubSub() {
@Override
public void onMessage(String channel, String message) {
System.out.println("Received message: " + message + " from channel: " + channel);
}
};
jedis.subscribe(jedisPubSub, "channel");
```
4. 发布消息:
```java
jedis.publish("channel", "Hello, Redis!");
```
5. 关闭 Jedis 对象和连接池:
```java
jedisPubSub.unsubscribe();
jedis.close();
pool.close();
```
Redisson 是基于 Redis 的 Java 驱动库,可以通过以下方式来实现订阅消费:
1. 创建 RedissonClient 对象,连接 Redis 服务器:
```java
Config config = new Config();
config.useSingleServer().setAddress("redis://localhost:6379");
RedissonClient redissonClient = Redisson.create(config);
```
2. 订阅指定频道:
```java
RTopic<String> topic = redissonClient.getTopic("channel");
topic.addListener((channel, message) -> {
System.out.println("Received message: " + message + " from channel: " + channel.getName());
});
```
3. 发布消息:
```java
RTopic<String> topic = redissonClient.getTopic("channel");
topic.publish("Hello, Redisson!");
```
4. 关闭 RedissonClient 对象:
```java
redissonClient.shutdown();
```
以上是 Java 使用 Jedis 和 Redisson 客户端实现 Redis 订阅消费的基本流程。需要注意的是,Jedis 和 Redisson 对象都需要在使用后关闭连接,否则会导致连接池资源浪费。
阅读全文