SpringBoot监听Redis的Key失效,并执行回调方法
修改Redis配置文件redis.conf,将notify-keyspace-events Ex
配置项解开注释,第1075行左右。
Redis监听配置类
@Configuration
public class RedisListenConfig {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory factory){
RedisMessageListenerContainer container=new RedisMessageListenerContainer();
container.setConnectionFactory(factory);
return container;
}
}
监听带key失效的回调方法
@Component
public class KeyExpiredListener extends KeyExpirationEventMessageListener {
public KeyExpiredListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
/**
* 使用该方法监听,当Redis的key失效的时候执行该方法
*/
@Override
public void onMessage(Message message, byte[] pattern) {
//过期的key
String expireKey=message.toString();
System.out.println("该key已经失效 = " + expireKey);
}
}
编写测试类,添加一个key到Redsi中
@Test
public void redisKeyExpireListen(){
String key="userId";
redisTemplate.opsForValue().set(key,"001",1, TimeUnit.MINUTES);
}
结果