Redis開啟鍵空間通知實(shí)現(xiàn)超時通知的步驟詳解
Redis部分設(shè)置
修改配置文件redis.conf(Windows為redis.windows.conf)
- 打開該配置文件(位置取決于自己的安裝位置),找到Event notification部分。
- 將notify-keyspace-events Ex的注釋打開或者添加該配置,其中E代表Keyevent,此種通知會返回key的名字,x代表超時事件。
- 如果notify-keyspace-events ""配置沒有被注釋的話要注釋掉,否則不會生效。
- 保存后重啟redis,一定要使用當(dāng)前配置文件重啟,例如src/redis-server redis.conf
SpringBoot部分設(shè)置
添加redis依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
在全局配置文件application中添加redis配置
spring.redis.host = 39.105.145.179 spring.redis.port=6379 spring.redis.database=0 spring.redis.listen-pattern = __keyevent@0__:expired
listen-pattern填寫超時時間,意思為springboot將監(jiān)聽redis發(fā)出的超時鍵空間通知。
創(chuàng)建listener
public class TopicMessageListener implements MessageListener { @Override public void onMessage(Message message, byte[] bytes) { byte[] body = message.getBody(); byte[] channel = message.getChannel(); System.out.println(new String(body)); System.out.println(new String(channel)); } }
其中message為redis返回的通知,body為超時的key的名字,channel為超時事件
創(chuàng)建listener配置類
@Configuration public class RedisListenerConfiguration { @Bean public RedisMessageListenerContainer getListenerContainer(RedisConnectionFactory connectionFactory){ //創(chuàng)建連接容器 RedisMessageListenerContainer container = new RedisMessageListenerContainer(); //放入redis連接 container.setConnectionFactory(connectionFactory); //寫入需要被監(jiān)聽的類型,即超時監(jiān)聽 Topic topic = new PatternTopic("__keyevent@0__:expired"); container.addMessageListener(new TopicMessageListener(), topic); return container; } }
之后當(dāng)有鍵值過期時,redis會發(fā)送通知被上面的TopicMessageListener接收,在該類中即可調(diào)用對應(yīng)的業(yè)務(wù)方法進(jìn)行業(yè)務(wù)處理。
總結(jié)
到此這篇關(guān)于Redis開啟鍵空間通知實(shí)現(xiàn)超時通知的步驟的文章就介紹到這了,更多相關(guān)redis鍵空間通知內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談redis的maxmemory設(shè)置以及淘汰策略
下面小編就為大家?guī)硪黄獪\談redis的maxmemory設(shè)置以及淘汰策略。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03Linux安裝Redis、后臺運(yùn)行、系統(tǒng)自啟動的設(shè)置方法
Redis是用C語言編寫的開源免費(fèi)的高性能的分布式內(nèi)存數(shù)據(jù)庫,基于內(nèi)存運(yùn)行并支持持久化的NoSQL數(shù)據(jù)庫。這篇文章主要介紹了Linux安裝Redis、后臺運(yùn)行、系統(tǒng)自啟動,需要的朋友可以參考下2020-01-01Redis核心原理與實(shí)踐之字符串實(shí)現(xiàn)原理
這本書深入地分析了Redis常用特性的內(nèi)部機(jī)制與實(shí)現(xiàn)方式,內(nèi)容源自對Redis源碼的分析,并從中總結(jié)出設(shè)計(jì)思路、實(shí)現(xiàn)原理。對Redis字符串實(shí)現(xiàn)原理相關(guān)知識感興趣的朋友一起看看吧2021-09-09Redis遠(yuǎn)程字典服務(wù)器?hash類型示例詳解
這篇文章主要介紹了Redis遠(yuǎn)程字典服務(wù)器?hash類型示例詳解,本文通過示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08Redis數(shù)據(jù)結(jié)構(gòu)類型示例解析
這篇文章主要為大家介紹了Redis數(shù)據(jù)結(jié)構(gòu)類型示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02