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