1、引用redis的包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、配置redis監聽容器
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
@Configuration
public class RedisListenerConfig {
//from fhadmin.cn
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
}
3、建立redis過期監聽
@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
//from fhadmin.cn
@Override
public void onMessage(Message message, byte[] pattern) {
// 過期key
String expiredKey = message.toString();
System.out.println(expiredKey + "過期了");
// 下面可以透過redis工具獲取值或者執行業務邏輯
}
public RedisKeyExpirationListener(RedisMessageListenerContainer redisMessageListenerContainer ){
super(redisMessageListenerContainer);
}
}
4、測試是否可行
這個時候你可以搞個api測試下,設定過期事件為30秒,看下當key過期時,是否會正常被監聽到。
5、注意事項
注意:監聽器能監聽到redis中過期的key是有個要求的,必須在redis配置檔案裡面設定能夠監聽到key過期事件,配置檔案去目錄下找,配置如下:
本作品採用《CC 協議》,轉載必須註明作者和本文連結