1. 程式人生 > >springboot redis 監聽過期key值事件

springboot redis 監聽過期key值事件

redis 中的key值過期後,觸發通知事件

 

1、建立springboot工程,建立監聽類

 

maven配置

<dependencies>
        <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
        <version>1.5.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.10.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>1.5.10.RELEASE</version>
            <scope>test</scope>
        </dependency>
    </dependencies>             

 

建立兩個類

RedisKeyExpirationListener
@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) { // 使用者做自己的業務處理即可,注意message.toString()可以獲取失效的key String expiredKey = message.toString(); System.out.println(expiredKey); } }

 

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

 

 

2、redis配置

 使用預設配置,localhost:6379 不設定密碼 

然後在此基礎上把notify-keyspace-events Ex 這一行的註釋開啟

 

啟動工程 redis-server.exe redis.windows.conf 

 

3、測試

 

執行命令 set a 1 ex 2

兩秒後觸發回撥