redis 监听key失效
@Configuration
public class RedisCaffeineCacheManager {
@Autowired
private RedisConnectionFactory redisConnectionFactory;
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
RestTemplate restTemplate = new RestTemplate(factory);
restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(Charset.forName("UTF-8")));
return restTemplate;
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);
factory.setConnectTimeout(5000);
return factory;
}
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer() {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(redisConnectionFactory);
return container;
}
@Bean
public ChannelTopic expiredTopic() {
return new ChannelTopic("__keyevent@0__:expired");
}
@Component
@Slf4j
public class ExpiredKeyNotification extends KeyExpirationEventMessageListener {
@Autowired
public RedisTemplate<String,String> redisTemplate;
public ExpiredKeyNotification(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
@Override
public void onMessage(Message message, byte[] bytes) {
String key = new String(message.getBody(), StandardCharsets.UTF_8);
System.out.println("key = " + key);
String myKey = redisTemplate.opsForValue().get("myKey");
System.out.println(myKey);
}
}
}