redis的订阅功能有什么用

  • redis的订阅功能有什么用已关闭评论
  • A+
所属分类:技术教程
摘要

redis订阅功能可以用于消息的传输,是一种消息通信模式,Redis客户端可以订阅任意数量的频道,具体实现代码:package com.hcmony.sword.redis;import org.apache.commons.lang3.S

本文收集自网络,
redis的订阅功能有什么用

redis的订阅功能有什么用

Redis订阅功能可以用于消息的传输,是一种消息通信模式,Redis客户端可以订阅任意数量的频道,具体实现代码:

package com.hcmony.sWord.redis;

import org.apache.commons.lang3.StringUtils;

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

import redis.clients.jedis.JedisPubSub;

public class RedisMQ {

 

private static final String TOPIC="TOPIC";

 

private final JedisPool jedisPool;

 

public RedisMQ(JedisPool jedisPool) {

this.jedisPool = jedisPool;

public void publish(String topic ,String messge){

 

Jedis jedis = null;

if (StringUtils.isBlank(topic)){

topic=TOPIC;

}

try {

jedis = jedisPool.getResource();

jedis.publish(topic,messge);

}

finally {

if (null != jedis) {

jedis.close();

}

}

}

public void subscribe(String topic,JedisPubSub jedisPubSub){

 

Jedis jedis = null;

if (StringUtils.isBlank(topic)){

topic=TOPIC;

}

try {

jedis = jedisPool.getResource();

jedis.subscribe(jedisPubSub,topic);

}

finally {

if (null != jedis) {

jedis.close();

}

}

}

public static void main(String[] args) {

//默认连接本地redis,

// loclhost:6379

JedisPool jedisPool = new JedisPool();

RedisMQ publish = new RedisMQ(jedisPool);

new Thread(new Runnable() {

@Override

public void run() {

publish.subscribe("PID",new MyjedisPubSub());

}

}).start();

for (int i=0;i<100;i++){

publish.publish("PID","messge"+i);

}

}

public static class MyjedisPubSub extends JedisPubSub {

@Override

public void onMessage(String channel, String message) {

System.out.println("-------channel is "+channel+" message is "+message);

}

}

}

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin