1、pom.xml中引入spring-data-redis依赖
<!-- redis的starter引入 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<!-- <version>1.5.17.RELEASE</version> -->
</dependency>
2、RedisConfig.java 配置类
@Configuration
public class RedisConfig {
//redis监听容器
@Bean
public RedisMessageListenerContainer listenerContainer(RedisConnectionFactory connectionFactory){
System.out.println("RedisMessageListenerContainer 创建");
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
// container.addMessageListener(expireMessageListener,new ChannelTopic("__keyevent@0__:expired"));
// container.addMessageListener(new RedisExpiredListener(), new PatternTopic("__keyevent@0__:expired"));
container.addMessageListener(myRedisListener(), new ChannelTopic("__keyevent@0__:expired"));
return container;
}
@Bean
public MyRedisListener myRedisListener() {
return new MyRedisListener();
}
}
3、MyRedisListener 自定义的监听bean
package com.tingcream.springmybatis.common.listener;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
public class MyRedisListener implements MessageListener {
@Override
public void onMessage(Message message, byte[] pattern) {
System.out.println("开始监听");
String key = new String(message.getBody());
System.out.println("监听到redis的key自动过期:"+key);
}
}
4、修改redis服务的redis.conf配置
#notify-keyspace-events ""
notify-keyspace-events Ex
:x 保存退出。
5、使用 redis-cli 测试 。
修改redis.conf文件
修改 notify-keyspace-events Ex
打开一个redis-cli客户端(a)
subscribe __keyevent@0__:expired
打开另一个redis-cli客户端(b)
setex key1 10 value1
setex key2 10 value2
10秒后会发现客户端(a)会输出
1) "message"
2) "__keyevent@0__:expired"
3) "key1"
1) "message"
2) "__keyevent@0__:expired"
3) "key2"


阅读排行


Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1