博客详情

springboot项目中监听redis的key自动失效事件 (原创)

作者: 朝如青丝暮成雪
发布时间:2019-08-07 11:29:46  文章分类:java编程   阅读(2716)  评论(0)

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"



关键字:  redis  事件监听  key自动失效
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

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

鄂公网安备 42011102000739号