1. 程式人生 > 程式設計 >SpringBoot如何整合redis實現過期key監聽事件

SpringBoot如何整合redis實現過期key監聽事件

可以用於簡單的過期訂單取消支付、7天自動收貨場景中

1、Spring Boot整合redis 參考

https://www.jb51.net/article/170687.htm

2、開啟redis服務的配置檔案新增notify-keyspace-events Ex 如果是註釋了,就取消註釋

SpringBoot如何整合redis實現過期key監聽事件

Linux安裝redis:https://www.jb51.net/article/193265.htm

Windows安裝redis:https://www.jb51.net/article/176040.htm

3、在redis配置類 @Configuration 新增如下內容

@Bean
  RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
    RedisMessageListenerContainer container = new RedisMessageListenerContainer();
    container.setConnectionFactory(connectionFactory);
    return container;
  }

4、新建過期Key監聽

RedisKeyExpirationListener.java

import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;

@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {


  public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
    super(listenerContainer);
  }

  /**
   * 針對 redis 資料失效事件,進行資料處理
   *
   * @param message
   * @param pattern
   */
  @Override
  public void onMessage(Message message,byte[] pattern) {
    System.out.println("過期"+message.toString());
  }
}

使用方式

//把key放進redis中,並設定過期時間為三秒,也可以按照自己的寫法
redisService.set(key,key,3);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。