记一次redis 监听过期key使用错误
现象:使用redis过期key监听实现定时结束任务,但代码配置过后监听器不生效
原因:conf文件未进行开始监听配置 notify-keyspace-events Ex
1.更改redis.conf 配置 notify-keyspace-events
2.Springboot开启redis监听
@Configuration
public class RedisListenerConfig {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
}
@Component
public class DeviceKeyExpirationEventMessageListener extends KeyExpirationEventMessageListener {
@Resource
ExamineTestTask examineTestTask;
private Logger logger = LoggerFactory.getLogger(DeviceKeyExpirationEventMessageListener.class);
public DeviceKeyExpirationEventMessageListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
/**
* 监听失效的key,key格式为keeplive_deviceId
*
* @param message
* @param pattern
*/
@Override
public void onMessage(Message message, byte[] pattern) {
// 获取失效的key
String expiredKey = message.toString();
//业务代码
}
}