使用Spring Data Redis 實現訂閱/釋出
Redis
Redis是一個key-value的儲存系統,提供的key-value的資料介面,其效能非常的出色,一般常用作快取使用,但是其除了可以作為快取之外,自身也提供了一套訂閱/釋出的系統。
Spring Data Redis
Spring Data Redis是Spring的一套框架,提供了Redis 的各種操作,可以讓我們便捷的操作Redis,本文介紹一下基於Spring Data Redis實現的訂閱/釋出(pub/sub)系統。
PUB/SUB
Spring Data Redis中對Redis的操作是通過Spring封裝的一個redisTemplate實現的,在spring的配置檔案中進行一些相關的Redis配置資訊即可使用。
Spring配置:
<!-- 定義Spring Redis連線工廠 -->
<bean id="redisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="${redis.url}" />
<property name="port" value="${redis.port}" />
<property name ="password" value="${redis.password}" />
<property name="database" value="0" />
<property name="usePool" value="true" />
</bean>
<!-- 定義Spring RedisTemplate -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
p:connectionFactory-ref ="redisConnectionFactory"/>
<bean id="redisService" class="com.test.redis.impl.RedisServicempl">
<property name="redisTemplate" ref="redisTemplate" />
</bean>
<!-- 定義Spring Redis的序列化器 -->
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer" />
<bean id="jsonRedisSerializer" class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer" />
<!-- 定義Redis 監聽類 -->
<bean id="dataSyncEventListener" class="com.test.redis.DataSyncEventListener" />
<!-- 註冊Redis訊息訂閱的監聽器 -->
<redis:listener-container>
<redis:listener ref="dataSyncEventListener" serializer="jsonRedisSerializer" method="onMessage" topic="topic" />
</redis:listener-container>
在這裡,需要一點注意,訂閱訊息的監聽類,可以實現MessageListener介面或MessageDelegateListener介面,如何不想實現任何介面,則需要在method指定“handleMessage”方法名,並自己實現handleMessage方法。
Redis操作類:
public class RedisServiceImpl implements RedisService {
@AutoWired
private RedisTemplate<String, Object> redisTemplate;
@Override
public void sendMessage(String channel, Serializable message) {
redisTemplate.convertAndSend(channel, message);
}
}
可以看到,通過這個 sendMessage方法,可以把一條可序列化的訊息傳送到channel頻道,訂閱者只要訂閱了這個channel,他就會接收發布者釋出的訊息.。
訊息監聽類:
public class DataSyncEventListener implements MessageListener {
@Autowired
private RedisSerializer<String> stringRedisSerializer;
@Autowired
private RedisSerializer<Object> jsonRedisSerializer;
@Override
public void onMessage(Message message, byte[] pattern) {
String channel = stringRedisSerializer.deserialize(message.getChannel());
Object object = jsonRedisSerializer.deserialize(message.getBody());
System.out.println("channel is :" + channel);
System.out.println("message is :" + object.toString);
}
}
當然有了釋出訊息的sendMessage,也得有個接收訊息的Listener,用於接收訂閱到的訊息。
這樣,Redis的PUB/SUB訂閱釋出系統就配置完成了。
相關推薦
使用Spring Data Redis 實現訂閱/釋出
Redis Redis是一個key-value的儲存系統,提供的key-value的資料介面,其效能非常的出色,一般常用作快取使用,但是其除了可以作為快取之外,自身也提供了一套訂閱/釋出的系統。 Spring Data Redis Spring Dat
spring-data-redis實現redis釋出訂閱
maven 依賴包 <properties> <spring.version>5.1.0.RELEASE</spring.version> </properties> <dependencies
shiro+cas+spring-data-redis實現多系統單點登入和分散式專案的session同步
CSDN開通很久了,但是一直沒寫東西,2018年了,這是我CSDN的第一篇文章,歡迎各位評論探討和指點。 一、背景: 現在公司的業務系統要做多臺分散式叢集,由於是web專案,要做session同步,想到的方案是用目前火熱的redis資料庫儲存session,還有業
window下redis的常用命令、spring結合redis實現訊息釋出監聽系統
redis是近幾年比較流行的基於記憶體的高效能key-value持久化非關係型資料庫,redis也可與spring結合做非同步消費釋出監聽系統 redis下載地址: https://download.csdn.net/download/higherzj
Spring Spring-data-redis 實現的訊息佇列
配置環境 版本資訊: Spring 4.2.8.RELEASE(其中囊括tx、webmvc、context、aop之類的) Spring-data-jpa 1.10.5.RELEASE Spring-data-redis 1.8.0.RELEASE
SpringBoot整合Spring-data-redis實現集中式快取
從框架的角度來看,儲存在Redis中的資料只是位元組。雖然說Redis支援多種資料型別,但是那只是意味著儲存資料的方式,而不是它所代表的內容。由我們將這些資料轉化成字串或者是其他物件。我們通過org.springframework.data.redis.serializer. RedisSerializer
Spring Session Data Redis實現session共享
web.xml odi 數據庫 tails spool ima 配置步驟 配置文件 work 1.前言 在開發中遇到一個關於用戶體驗的問題,每次當運維進行更新重啟服務器時,都會導致會員平臺中已登錄的用戶掉線。這是因為每個用戶的會話信息及狀態都是由session來保存的,
spring-session-data-redis 實現session共享
1.新增依賴 <dependency> <groupId>redis.clients</groupId> <
Spring Data Redis 二:RedisTemplate實現事物問題剖析和解決
三、解決方案 只能自己實現RedisCallBack底層,採用RedisTemplate的SesionCallback來完成在同一個Connection中,完成多個操作的方法: SessionCallback<Object> sessionCallback=new SessionCa
Spring-data-redis: pub/sub訊息訂閱
Redis中pub/sub特性,可以用來實現類似與JMS的“topic”功能,只不過這些訊息無法被持久化而已。spring-data-redis元件中對pub/sub提供了類似JMS的程式設計模式,我們通過例項來展示如何使用。 需要注意的是,在redis中訊息
Spring-data-Redis SpringMvc + Redis 實現 redis快取報錯處理 序列化 反序列化報錯
1. 解決辦法: 在所使用的 java bean xxx.xxx.Account 新增預設的構造方法 public Account(){} org.springframework.data.redis.serializer.SerializationException:
springboot整合redis實現訊息釋出訂閱模式-雙通道(跨多伺服器)
基礎配置參考https://blog.csdn.net/llll234/article/details/80966952 查看了基礎配置那麼會遇到一下幾個問題: 1.實際應用中可能會訂閱多個通道,而一下這種寫法不太通用container.addMessageListener
SpringBoot中使用Spring Data Jpa 實現簡單的動態查詢的兩種方法
ppr eat value table 得到 blog .net ride integer 首先謝謝大佬的簡書文章:http://www.jianshu.com/p/45ad65690e33# 這篇文章中講的是spring中使用spring data jpa,使用了xml配
Spring整合Redis(spring-data-redis)
nds 獲取 可能 div 普通 工具 long red 等待 歷經幾天看了大量的博客資料,差不多算是搞定了,目前只是針對單個數據源,集群暫時沒研究 maven依賴 <properties> <!-- redis 版本 --> &l
Spring集成Redis方案(spring-data-redis)(基於Jedis的單機模式)(待實踐)
packaging 基於 .cn @override time Coding 很好 -o -i 繼上一篇文章http://www.cnblogs.com/EasonJim/p/7625738.html中提到的幾款客戶端,它們基本都能和Spring集成。 下面介紹的是基於S
使用Spring Data Redis操作Redis(單機版)
nec one com list() 研究 enc keys wire 設置ip Jedis是一款Java連接Redis的客戶端,Spring基於Jedis進行了封裝,提供了簡潔的操作Redis的方法。那就是Spring Data Redis。其實後來研究發現,Spring
Spring Boot + spring-data-redis
調用 ons cor spring edi start ota struct out Redis Redis是緩存, 消息隊列, 多種類型的key-value存儲服務. Spring Boot Spring Boot為Lettcue和Jedis客戶端提供自動註入配置
在Spring Boot中使用Spring-data-jpa實現分頁查詢(轉)
分頁查詢 log def inpu database ext identity odin btn 在我們平時的工作中,查詢列表在我們的系統中基本隨處可見,那麽我們如何使用jpa進行多條件查詢以及查詢列表分頁呢?下面我將介紹兩種多條件查詢方式。 1、引入起步依賴
Spring Data Redis入門示例:程序配置(五)
dex port scl lis fault gre source inf 操作 單機配置 redis.properties配置 #redis的服務器地址 redis.host=127.0.0.1 #redis的服務端口 redis.port=6379 #客戶端超時時間
Spring Data Redis整體介紹 (一)
目前 擴展 刪除 依據 實例化 -m doc 不同的 SDR 為什麽使用Spring Data Redis 首先Spring Data Redis 是Spring 框架提供的用於操作Redis的客戶端。 Spring框架是一個全棧Java程序框架,通過DI、AOP和便攜的服