SpringBoot監(jiān)聽Redis key失效事件的實(shí)現(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 選項(xiàng)的默認(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)有過期鍵被刪除時(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>
- 定義配置類`RedisListenerConfig
@Configuration
public class RedisListenerConfig {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
}
- 定義監(jiān)聽器 實(shí)現(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實(shí)現(xiàn)監(jiān)聽Redis key失效事件的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot監(jiān)聽Redis key的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
spring使用Filter過濾器對(duì)Response返回值進(jìn)行修改的方法
這篇文章主要介紹了spring使用Filter過濾器對(duì)Response返回值進(jìn)行修改,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09
feign post參數(shù)對(duì)象不加@RequestBody的使用說明
這篇文章主要介紹了feign post參數(shù)對(duì)象不加@RequestBody的使用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
關(guān)于spring.factories失效原因分析及解決
這篇文章主要介紹了關(guān)于spring.factories失效原因分析及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
Java springboot 整合 Nacos的實(shí)例代碼
這篇文章主要介紹了Java springboot 整合 Nacos的實(shí)例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04

