Redis过期自动回调
Redis过期自动回调
·
首先找到reids.conf中取消notify-keyspace-events Ex的注释,因为开启过期回调是需要占用资源的,所以默认是注释的。
编写配置类
package com.zking.camera.config;
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 {
@Bean
public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory){
RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
redisMessageListenerContainer.setConnectionFactory(connectionFactory);
return redisMessageListenerContainer;
}
}
编写工具类
package com.zking.camera.listener;
import lombok.SneakyThrows;
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);
}
/**
* 使用该方法监听,当我们key过期是自动调用该方法
* @param message
* @param pattern
*/
@SneakyThrows
@Override
public void onMessage(Message message, byte[] pattern) {
String s = message.toString();//就是过期的key
System.out.println("过期的key"+s);
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)