redis發(fā)布訂閱什么用

redis發(fā)布訂閱什么用

redis 發(fā)布訂閱(pub/sub)是一種消息通信模式:發(fā)送者(pub)發(fā)送消息,訂閱者(sub)接收消息。

Redis 客戶端可以訂閱任意數(shù)量的頻道。? ? ? ? ? ? ? ? (推薦學(xué)習(xí):Redis視頻教程

Redis提供了發(fā)布訂閱功能,可以用于消息的傳輸,Redis的發(fā)布訂閱機(jī)制包括三個(gè)部分,發(fā)布者,訂閱者和channel。?

redis發(fā)布訂閱什么用

發(fā)布者和訂閱者都是Redis客戶端,Channel則為Redis服務(wù)器端,發(fā)布者將消息發(fā)送到某個(gè)的頻道,訂閱了這個(gè)頻道的訂閱者就能接收到這條消息。Redis的這種發(fā)布訂閱機(jī)制與基于主題的發(fā)布訂閱類似,Channel相當(dāng)于主題。

1,引入Jedis

????????<dependency> ????????????<groupid>redis.clients</groupid> ????????????<artifactid>jedis</artifactid> ????????????<version>2.9.0</version> ????????</dependency>

2,具體實(shí)現(xiàn)代碼

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; 	} ? 	/** 	?*?發(fā)布消息 	?*?@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)?{ 		//默認(rèn)連接本地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<p>更多Redis相關(guān)技術(shù)文章,請(qǐng)?jiān)L問<a href="https://www.php.cn/course/list/54.html" target="_self">Redis視頻教程</a>欄目進(jìn)行學(xué)習(xí)!</p>

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊5 分享