监听Redis中Key值的变化(SpringBoot整合)
要监听Redis中Key值的变化,可以使用spring-data-redis
中的RedisMessageListenerContainer
和MessageListener
。以下是一个简单的例子:
- 添加依赖到你的
pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 配置
RedisMessageListenerContainer
和MessageListenerAdapter
:
@Component
public class RedisKeyChangeListener {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Bean
RedisMessageListenerContainer redisContainer() {
final RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(stringRedisTemplate.getConnectionFactory());
container.addMessageListener(messageListenerAdapter(), topic());
return container;
}
@Bean
MessageListenerAdapter messageListenerAdapter() {
return new MessageListenerAdapter(new RedisKeyChangeHandler());
}
@Bean
ChannelTopic topic() {
return new ChannelTopic("redisKeyChangeTopic");
}
@Component
public static class RedisKeyChangeHandler {
public void handleMessage(Message message, byte[] pattern) {
// message.toString() 可以获取到Key的变化信息
System.out.println("Received Redis message: " + message);
}
}
}
- 在Redis中发布消息的时候,确保使用
PUBLISH
命令发布到redisKeyChangeTopic
。
PUBLISH redisKeyChangeTopic "key1 has changed"
当Redis中的key值发生变化时,会自动触发RedisKeyChangeHandler
中的handleMessage
方法,并打印出变化信息。
注意:这个例子假设你已经有一个运行中的Redis服务器,并且spring.redis
的配置已经在application.properties
或application.yml
中设置好了。
评论已关闭