>  기사  >  데이터 베이스  >  Redis 게시 및 구독의 용도는 무엇입니까?

Redis 게시 및 구독의 용도는 무엇입니까?

(*-*)浩
(*-*)浩원래의
2019-11-22 10:50:102586검색

Redis 게시 및 구독의 용도는 무엇입니까?

Redis 게시 및 구독(pub/sub)은 메시지 통신 모델입니다. 발신자(pub)는 메시지를 보내고 구독자(sub)는 메시지를 받습니다.

Redis 클라이언트는 원하는 수의 채널을 구독할 수 있습니다. (추천 학습: Redis 비디오 튜토리얼 )

Redis는 메시지 전송에 사용할 수 있는 구독 기능을 제공합니다. Redis의 릴리스 메커니즘은 게시자, 구독자 및 채널의 세 부분으로 구성됩니다.

Redis 게시 및 구독의 용도는 무엇입니까?

게시자와 구독자는 모두 Redis 클라이언트이고, 채널은 Redis 서버입니다. 게시자는 특정 채널에 메시지를 보내고, 이 채널을 구독하는 구독자는 메시지를 받을 수 있습니다. Redis의 게시 및 구독 메커니즘은 주제 기반 게시 및 구독과 유사하며 채널은 주제와 동일합니다.

1, Jedis 소개

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

2, 특정 구현 코드

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;
 
/**
 * <h3>Shenjue.java基本描述</h3>
 * <p></p>
 *
 * @author hcmony
 * @since V1.0.0, 2019/05/06 20:07
 */
public class RedisMQ {
 	private static final String TOPIC="TOPIC";
 
	private final JedisPool jedisPool;
 
	public RedisMQ(JedisPool jedisPool) {
		this.jedisPool = jedisPool;
	}
 
	/**
	 * 发布消息
	 * @param topic
	 * @param messge
	 */
	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();
			}
		}
	}
 
	/**
	 * 订阅消息
	 * @param topic
	 * @param jedisPubSub
	 */
	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);
		}
	}
 
}

더 많은 Redis 관련 기술 기사를 보려면 Redis 데이터베이스 사용 튜토리얼 칼럼을 방문하여 알아보세요!

위 내용은 Redis 게시 및 구독의 용도는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.