ホームページ  >  記事  >  データベース  >  Redis のパブリッシュとサブスクライブの用途は何ですか?

Redis のパブリッシュとサブスクライブの用途は何ですか?

(*-*)浩
(*-*)浩オリジナル
2019-11-22 10:50:102552ブラウズ

Redis のパブリッシュとサブスクライブの用途は何ですか?

Redis パブリッシュおよびサブスクライブ (pub/sub) はメッセージ通信モデルです。送信者 (pub) がメッセージを送信し、サブスクライバー (sub) がメッセージを受信します。

Redis クライアントは、任意の数のチャネルにサブスクライブできます。 (推奨学習: Redis ビデオ チュートリアル )

Redis は、メッセージ送信に使用できるパブリッシュおよびサブスクライブ機能を提供します。Redis のパブリッシュおよびサブスクライブ メカニズムには、次の 3 つの部分が含まれます。パブリッシャー、サブスクライバー、チャンネル。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。