1. 程式人生 > 其它 >spring監聽redis的key失效事件

spring監聽redis的key失效事件

技術標籤:springredisredisspringjava

有時候我們在專案中會需要監聽redis的key失效事件,springboot-boot-starter-data-redis 這個包為我們提供了監聽redis的key失效的功能。

/**
 * RedisKey 失效監聽器
 */
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秒,就能夠看到控制檯輸出
在這裡插入圖片描述