SpringBoot監(jiān)聽(tīng)Redis key失效事件的實(shí)現(xiàn)代碼
一. 開(kāi)啟Redis key過(guò)期提醒
方式一:修改配置文件
redis.conf
# 默認(rèn) notify-keyspace-events "" notify-keyspace-events Ex
- 方式二:命令行開(kāi)啟
CONFIG SET notify-keyspace-events Ex CONFIG GET notify-keyspace-events
二. notify-keyspace-events
notify-keyspace-events 選項(xiàng)的默認(rèn)值為空
notify-keyspace-events 的參數(shù)可以是以下字符的任意組合, 它指定了服務(wù)器該發(fā)送哪些類(lèi)型的通知。
字符 | 發(fā)送的通知 |
---|---|
K | 鍵空間通知,所有通知以 keyspace@ 為前綴 |
E | 鍵事件通知,所有通知以 keyevent@ 為前綴 |
g | DEL 、 EXPIRE 、 RENAME 等類(lèi)型無(wú)關(guān)的通用命令的通知 |
$ | 字符串命令的通知 |
l | 列表命令的通知 |
s | 集合命令的通知 |
h | 哈希命令的通知 |
z | 有序集合命令的通知 |
x | 過(guò)期事件:每當(dāng)有過(guò)期鍵被刪除時(shí)發(fā)送 |
e | 驅(qū)逐(evict)事件:每當(dāng)有鍵因?yàn)?maxmemory 政策而被刪除時(shí)發(fā)送 |
A | 參數(shù) g$lshzxe 的別名 |
三. Coding
初始化一個(gè)
Spring Boot
項(xiàng)目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>
- 定義配置類(lèi)`RedisListenerConfig
@Configuration public class RedisListenerConfig { @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); return container; } }
- 定義監(jiān)聽(tīng)器 實(shí)現(xiàn)
KeyExpirationEventMessageListener
接口
查看源碼發(fā)現(xiàn),該接口監(jiān)聽(tīng)所有db的過(guò)期事件keyevent@*:expired"
定義Status1ExpirationListener
監(jiān)聽(tīng)狀態(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īng)狀態(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實(shí)現(xiàn)監(jiān)聽(tīng)Redis key失效事件的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot監(jiān)聽(tīng)Redis key的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- springboot+redis過(guò)期事件監(jiān)聽(tīng)實(shí)現(xiàn)過(guò)程解析
- Spring Boot監(jiān)聽(tīng)Redis Key失效事件實(shí)現(xiàn)定時(shí)任務(wù)的示例
- spring boot+redis 監(jiān)聽(tīng)過(guò)期Key的操作方法
- SpringBoot如何整合redis實(shí)現(xiàn)過(guò)期key監(jiān)聽(tīng)事件
- SpringBoot如何監(jiān)控Redis中某個(gè)Key的變化(自定義監(jiān)聽(tīng)器)
- SpringBoot中使用Redis?Stream實(shí)現(xiàn)消息監(jiān)聽(tīng)示例
- SpringBoot如何監(jiān)聽(tīng)redis?Key變化事件案例詳解
- springboot整合redis過(guò)期key監(jiān)聽(tīng)實(shí)現(xiàn)訂單過(guò)期的項(xiàng)目實(shí)踐
- 如何監(jiān)聽(tīng)Redis中Key值的變化(SpringBoot整合)
- SpringBoot使用Redis單機(jī)版過(guò)期鍵監(jiān)聽(tīng)事件的實(shí)現(xiàn)示例
相關(guān)文章
IntelliJ IDEA中如何構(gòu)建Spring Boot的項(xiàng)目
這篇文章主要介紹了IntelliJ IDEA中如何構(gòu)建Spring Boot的項(xiàng)目問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Spring Boot中使用RabbitMQ 生產(chǎn)消息和消費(fèi)消息的實(shí)例代碼
本文介紹了在SpringBoot中如何使用RabbitMQ進(jìn)行消息的生產(chǎn)和消費(fèi),詳細(xì)闡述了RabbitMQ中交換機(jī)的作用和類(lèi)型,包括直連交換機(jī)、主題交換機(jī)、扇出交換機(jī)和頭交換機(jī),并解釋了各自的消息路由機(jī)制,感興趣的朋友一起看看吧2024-10-10Java通過(guò)HttpClient進(jìn)行HTTP請(qǐng)求的代碼詳解
Apache?HttpClient是一個(gè)功能強(qiáng)大且廣泛使用的Java庫(kù),它提供了方便的方法來(lái)執(zhí)行HTTP請(qǐng)求并處理響應(yīng)。本文將介紹如何使用HttpClient庫(kù)進(jìn)行HTTP請(qǐng)求,包括GET請(qǐng)求、POST請(qǐng)求、添加參數(shù)和請(qǐng)求體、設(shè)置請(qǐng)求頭等操作,需要的朋友可以參考下2023-05-05SpringBoot3整合Mybatis完整版實(shí)例
本文詳細(xì)介紹了SpringBoot3整合MyBatis的完整步驟,包括添加數(shù)據(jù)庫(kù)驅(qū)動(dòng)和MyBatis依賴(lài)、配置數(shù)據(jù)源和MyBatis、創(chuàng)建表和Bean類(lèi)、編寫(xiě)Mapper接口和XML文件、創(chuàng)建Controller類(lèi)以及配置掃描包,通過(guò)這些步驟,可以實(shí)現(xiàn)SpringBoot3與MyBatis的成功整合,并進(jìn)行功能測(cè)試2025-01-01Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例
這篇文章主要介紹了Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10