Spring boot 实现监听 Redis key 失效事件
在Spring Boot中,要监听Redis key的失效事件,你可以使用RedisMessageListenerContainer
来接收发布/订阅消息。以下是一个基本的实现示例:
- 添加依赖到你的
pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 配置
RedisMessageListenerContainer
:
@Configuration
public class RedisConfig {
@Autowired
private RedisConnectionFactory connectionFactory;
@Autowired
private MessageSubscriber subscriber;
@Bean
RedisMessageListenerContainer redisMessageListenerContainer() {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.addMessageListener(subscriber, topic());
return container;
}
@Bean
MessagePublisher redisPublisher() {
return new MessagePublisher();
}
@Bean
ChannelTopic topic() {
return new ChannelTopic("__keyevent@0__:expired");
}
}
- 实现
MessageSubscriber
来处理失效事件:
public class MessageSubscriber implements MessageListener {
@Override
public void onMessage(Message message, byte[] pattern) {
String expiredKey = message.toString();
System.out.println("Key expired: " + expiredKey);
// 处理失效事件
}
}
确保你的Redis服务器配置允许发送失效事件,并且客户端订阅了正确的频道。在上面的代码中,我们订阅了__keyevent@0__:expired
频道,这是Redis默认的失效事件通道。
注意:这里的__keyevent@0__:expired
是基于Redis的db0,如果你使用的是其他db,需要相应地更改频道名称。
评论已关闭