spring?boot?redis中的key失效監(jiān)聽(tīng)的問(wèn)題解決
1、spring boot連接配置redis參考這篇文章
http://www.dbjr.com.cn/program/339977yti.htm
2、首先開(kāi)啟redis的事件失效推送功能,如果是redis容器啟動(dòng),參考下面的方式啟動(dòng)容器
docker run --restart=always -itd --name redis -p 6379:6379 redis redis-server --notify-keyspace-events Ex --requirepass xxxxxx
然后在redis客戶端下面使用如下方式驗(yàn)證
CONFIG GET notify-keyspace-events
3、在spring boot 中新建服務(wù)類(lèi)RedisKeyExpirationListener,用于捕捉獲取redis中的key失效
package com.example.redis_sub.config; import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.listener.KeyExpirationEventMessageListener; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.stereotype.Component; @Slf4j @Component public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener { public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) { super(listenerContainer); } @Override public void onMessage(Message message, byte[] pattern) { // 用戶做自己的業(yè)務(wù)處理即可,注意message.toString()可以獲取失效的key System.out.println("key失效"); String expiredKey = message.toString(); System.out.println(expiredKey); System.out.println(new String(pattern)); //業(yè)務(wù)邏輯 } }
4、新建配置類(lèi)RedisConfig
package com.example.redis_sub.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.listener.PatternTopic; import org.springframework.data.redis.listener.RedisMessageListenerContainer; @Configuration public class RedisConfig { @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); // 事件以__keyevent@<db>__為前綴進(jìn)行發(fā)布 // container.addMessageListener(new RedisKeyExpirationListener(container), new PatternTopic("__keyevent@0__" + // ":expired")); container.addMessageListener(new RedisKeyExpirationListener(container), new PatternTopic("__keyevent@0__" + ":expired")); return container; } }
到此這篇關(guān)于spring boot redis中的key失效監(jiān)聽(tīng)的問(wèn)題解決的文章就介紹到這了,更多相關(guān)springboot redis key失效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis中如何用tinyint保存Boolean類(lèi)型
這篇文章主要介紹了mybatis中如何用tinyint保存Boolean類(lèi)型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09Java實(shí)現(xiàn)創(chuàng)建Zip壓縮包并寫(xiě)入文件
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)創(chuàng)建Zip壓縮包并寫(xiě)入文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Java實(shí)現(xiàn)遞歸查詢樹(shù)結(jié)構(gòu)的示例代碼
我們?cè)趯?shí)際開(kāi)發(fā)中,肯定會(huì)用到樹(shù)結(jié)構(gòu),如部門(mén)樹(shù)、菜單樹(shù)等等。Java后臺(tái)利用遞歸思路進(jìn)行構(gòu)建樹(shù)形結(jié)構(gòu)數(shù)據(jù),返回給前端,能以下拉菜單等形式進(jìn)行展示。今天,咱們就來(lái)說(shuō)說(shuō)怎么樣將List集合轉(zhuǎn)換成TreeList2022-11-11Servlet的5種方式實(shí)現(xiàn)表單提交(注冊(cè)小功能),后臺(tái)獲取表單數(shù)據(jù)實(shí)例
這篇文章主要介紹了Servlet的5種方式實(shí)現(xiàn)表單提交(注冊(cè)小功能),后臺(tái)獲取表單數(shù)據(jù)實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05使用Java和SpringBoot實(shí)現(xiàn)服務(wù)器發(fā)送事件(Server-Sent Events)
使用Java開(kāi)發(fā)web應(yīng)用,大多數(shù)時(shí)候我們提供的接口返回?cái)?shù)據(jù)都是一次性完整返回,有些時(shí)候,我們也需要提供流式接口持續(xù)寫(xiě)出數(shù)據(jù),以下提供一種簡(jiǎn)單的方式,本文給大家介紹了如何在Java web中實(shí)現(xiàn)服務(wù)器發(fā)送事件,需要的朋友可以參考下2024-02-02聊聊BeanUtils.copyProperties和clone()方法的區(qū)別
這篇文章主要介紹了聊聊BeanUtils.copyProperties和clone()方法的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Mybatis分頁(yè)插件PageHelper的分頁(yè)原理剖析
這篇文章主要介紹了Mybatis分頁(yè)插件PageHelper的分頁(yè)原理剖析,PageHelper作為一個(gè)啟動(dòng)器,那么就和其他啟動(dòng)器加載一樣,先讀取spring.factories文件里面配置的類(lèi),轉(zhuǎn)成Bean加載本系統(tǒng)中,然后執(zhí)行他的前置后置處理方法,完成初始化,需要的朋友可以參考下2023-08-08