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

两秒后触发回调

 

 

 

 

posted on 2019-01-22 15:36  四六之间  阅读(36551)  评论(0编辑  收藏  举报