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)文章!
- springboot+redis過期事件監(jiān)聽實現(xiàn)過程解析
- Spring Boot監(jiān)聽Redis Key失效事件實現(xiàn)定時任務(wù)的示例
- spring boot+redis 監(jiān)聽過期Key的操作方法
- SpringBoot如何整合redis實現(xiàn)過期key監(jiān)聽事件
- SpringBoot如何監(jiān)控Redis中某個Key的變化(自定義監(jiān)聽器)
- SpringBoot中使用Redis?Stream實現(xiàn)消息監(jiān)聽示例
- SpringBoot如何監(jiān)聽redis?Key變化事件案例詳解
- springboot整合redis過期key監(jiān)聽實現(xiàn)訂單過期的項目實踐
- 如何監(jiān)聽Redis中Key值的變化(SpringBoot整合)
- SpringBoot使用Redis單機版過期鍵監(jiān)聽事件的實現(xiàn)示例
相關(guān)文章
IntelliJ IDEA中如何構(gòu)建Spring Boot的項目
這篇文章主要介紹了IntelliJ IDEA中如何構(gòu)建Spring Boot的項目問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07Spring Boot中使用RabbitMQ 生產(chǎn)消息和消費消息的實例代碼
本文介紹了在SpringBoot中如何使用RabbitMQ進(jìn)行消息的生產(chǎn)和消費,詳細(xì)闡述了RabbitMQ中交換機的作用和類型,包括直連交換機、主題交換機、扇出交換機和頭交換機,并解釋了各自的消息路由機制,感興趣的朋友一起看看吧2024-10-10Java通過HttpClient進(jìn)行HTTP請求的代碼詳解
Apache?HttpClient是一個功能強大且廣泛使用的Java庫,它提供了方便的方法來執(zhí)行HTTP請求并處理響應(yīng)。本文將介紹如何使用HttpClient庫進(jìn)行HTTP請求,包括GET請求、POST請求、添加參數(shù)和請求體、設(shè)置請求頭等操作,需要的朋友可以參考下2023-05-05Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例
這篇文章主要介紹了Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10