SpringBoot監(jiān)聽Redis key失效事件的實現(xiàn)代碼
一. 開啟Redis key過期提醒
方式一:修改配置文件
redis.conf
# 默認(rèn) notify-keyspace-events "" notify-keyspace-events Ex
- 方式二:命令行開啟
CONFIG SET notify-keyspace-events Ex CONFIG GET notify-keyspace-events
二. notify-keyspace-events
notify-keyspace-events 選項的默認(rèn)值為空
notify-keyspace-events 的參數(shù)可以是以下字符的任意組合, 它指定了服務(wù)器該發(fā)送哪些類型的通知。
字符 | 發(fā)送的通知 |
---|---|
K | 鍵空間通知,所有通知以 keyspace@ 為前綴 |
E | 鍵事件通知,所有通知以 keyevent@ 為前綴 |
g | DEL 、 EXPIRE 、 RENAME 等類型無關(guān)的通用命令的通知 |
$ | 字符串命令的通知 |
l | 列表命令的通知 |
s | 集合命令的通知 |
h | 哈希命令的通知 |
z | 有序集合命令的通知 |
x | 過期事件:每當(dāng)有過期鍵被刪除時發(fā)送 |
e | 驅(qū)逐(evict)事件:每當(dāng)有鍵因為 maxmemory 政策而被刪除時發(fā)送 |
A | 參數(shù) g$lshzxe 的別名 |
三. Coding
初始化一個
Spring Boot
項目pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies>
- 定義配置類`RedisListenerConfig
@Configuration public class RedisListenerConfig { @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); return container; } }
- 定義監(jiān)聽器 實現(xiàn)
KeyExpirationEventMessageListener
接口
查看源碼發(fā)現(xiàn),該接口監(jiān)聽所有db的過期事件keyevent@*:expired"
定義Status1ExpirationListener
監(jiān)聽狀態(tài)1到期
@Slf4j @Component public class Status1ExpirationListener extends KeyExpirationEventMessageListener { public Status1ExpirationListener(RedisMessageListenerContainer listenerContainer) { super(listenerContainer); } @Autowired private StringRedisTemplate stringRedisTemplate; @Override public void onMessage(Message message, byte[] pattern) { // message.toString()可以獲取失效的key String expiredKey = message.toString(); // 業(yè)務(wù)處理 } }
定義Status2ExpirationListener
監(jiān)聽狀態(tài)2到期
@Slf4j @Component public class Status2ExpirationListener extends KeyExpirationEventMessageListener { public Status2ExpirationListener(RedisMessageListenerContainer listenerContainer) { super(listenerContainer); } @Override public void onMessage(Message message, byte[] pattern) { // message.toString()可以獲取失效的key String expiredKey = message.toString(); // 業(yè)務(wù)處理 } }
四. 參考
以上就是SpringBoot實現(xiàn)監(jiān)聽Redis key失效事件的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot監(jiān)聽Redis key的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Maven依賴管理之parent與dependencyManagement深入分析
首先我們來說說parent標(biāo)簽,其實這個不難解釋,就是父的意思,pom也有繼承的。比方說我現(xiàn)在有A,B,C,A是B,C的父級?,F(xiàn)在就是有一個情況B,C其實有很多jar都是共同的,其實是可以放在父項目里面,這樣,讓B,C都繼承A就方便管理了2022-10-10MyBatis批量查詢、插入、更新、刪除的實現(xiàn)示例
由于需要處理短時間內(nèi)大量數(shù)據(jù)入庫的問題,想到了Mybatis的批量操作,本文主要介紹了MyBatis批量查詢、插入、更新、刪除的實現(xiàn)示例,感興趣的可以了解一下2023-05-05druid執(zhí)行SQL出現(xiàn)錯誤但不影響返回結(jié)果的問題及解決
這篇文章主要介紹了druid執(zhí)行SQL出現(xiàn)錯誤但不影響返回結(jié)果的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12springboot 自定義權(quán)限標(biāo)簽(tld),在freemarker引用操作
這篇文章主要介紹了springboot 自定義權(quán)限標(biāo)簽(tld),在freemarker引用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Java數(shù)組與二維數(shù)組及替換空格實戰(zhàn)真題講解
數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲固定大小的同類型元素,這篇文章主要介紹了Java數(shù)組與二維數(shù)組及替換空格實戰(zhàn)真題講解2022-07-07java字符串相加時的內(nèi)存表現(xiàn)和原理分析
這篇文章主要介紹了java字符串相加時的內(nèi)存表現(xiàn)和原理分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07使用graalvm為帶有反射功能的java代碼生成native?image的示例詳解
graalvm讓native鏡像支持反射的關(guān)鍵是利用json提前告訴它哪些類的哪些方法會被反射調(diào)用,然后它就能力在運(yùn)行時支持反射了,這篇文章主要介紹了如何使用graalvm為帶有反射功能的java代碼生成native?image,需要的朋友可以參考下2024-02-02