spring監聽redis的key失效事件
阿新 • • 發佈:2020-12-13
技術標籤:springredisredisspringjava
有時候我們在專案中會需要監聽redis的key失效事件,springboot-boot-starter-data-redis
這個包為我們提供了監聽redis的key失效的功能。
/**
* Redis 的 Key 失效監聽器
*/
public class RedisJobEventMessageListener extends KeyExpirationEventMessageListener {
public RedisJobEventMessageListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
@Override
protected void doHandleMessage(Message message) {
String key = message.toString();
// 這個就是過期的key ,過期後,也就是事件觸發後對應的value是拿不到的。
// 這裡實現業務邏輯,如果是伺服器叢集的話需要使用分散式鎖進行搶佔執行。
System.out.println("key = " + key);
System.out.println("end = " + LocalDateTime.now());
}
}
/**
* @author czx
* @date 2020/12/10 16:22
*/
@Configuration
public class RedisListenerConfig {
/**
* redis訊息監聽器的容器
* @param redisConnectionFactory
* @return
*/
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory) {
RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
return redisMessageListenerContainer;
}
/**
* Redis 監聽器註冊為Bean
* @param redisMessageListenerContainer
* @return
*/
@Bean
public RedisJobEventMessageListener redisJobEventMessageListener(RedisMessageListenerContainer redisMessageListenerContainer){
return new RedisJobEventMessageListener(redisMessageListenerContainer);
}
}
只需要新增以上的兩個類,就可以實現對redis的key失效事件進行監聽了。
下面我們來測試一下
先在redis中加入一個超時時間為10秒的key
set hello world ex 10
等待10秒,就能夠看到控制檯輸出