Springboot redis多数据源过期监听案例
在上一篇Springboot redis多数据源案例中,我们实现了springboot下多数据源的案例。
本篇博客在此基础上,实现多数据源过期监听事件:
监听器配置类:
package com.xinx.redismultidatasource.config.redis;import com.xinx.redismultidatasource.listener.RedisDb1ExpiredListener;
import com.xinx.redismultidatasource.listener.RedisDbExpiredListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;/*** redis过期监听配置类** redis过期监听配置(如果未测试通过,则程序无法监听到redis key过期事件)* 找到redis.conf文件,修改其中的notify-keyspace-events ""为notify-keyspace-events "Ex"** 测试redis过期监听是否开启成功:** 连接远程redis:* redis-cli -h [redis服务器ip] -p [redis端口] -a [密码]* 订阅监听事件:* psubscribe __keyevent@0__:expired** 新启一个客户端:* setex test_key 3 test_value** @author xinx* @date 2020/9/11 18:04*/
@Configuration
public class RedisExpiredListenerConfig {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Autowired@Qualifier("redisDbExpiredListener")private RedisDbExpiredListener redisDbExpiredListener;@Autowiredprivate StringRedisTemplate stringRedisTemplate1;@Autowired@Qualifier("redisDb1ExpiredListener")private RedisDb1ExpiredListener redisDb1ExpiredListener;/*** 配置redis过期监听器** @param listenerAdapter* @return*/@Bean@PrimaryRedisMessageListenerContainer container(@Qualifier("listenerAdapter") MessageListenerAdapter listenerAdapter) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(stringRedisTemplate.getConnectionFactory());// __keyevent@[redis库索引]__:expiredcontainer.addMessageListener(listenerAdapter, new PatternTopic("__keyevent@0__:expired"));return container;}@Bean("listenerAdapter")@PrimaryMessageListenerAdapter listenerAdapter() {return new MessageListenerAdapter(redisDbExpiredListener);}@BeanRedisMessageListenerContainer container1(@Qualifier("listenerAdapter1") MessageListenerAdapter listenerAdapter1) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(stringRedisTemplate1.getConnectionFactory());container.addMessageListener(listenerAdapter1, new PatternTopic("__keyevent@1__:expired"));return container;}@Bean("listenerAdapter1")MessageListenerAdapter listenerAdapter1() {return new MessageListenerAdapter(redisDb1ExpiredListener);}}
过期事件监听器:
package com.xinx.redismultidatasource.listener;import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.stereotype.Component;/*** @author xinx* @date 2020/9/11 18:07*/
@Component("redisDbExpiredListener")
public class RedisDbExpiredListener implements MessageListener {@Overridepublic void onMessage(Message message, byte[] bytes) {System.out.println(this.getClass().getCanonicalName() + "监听key:" + message.toString());System.out.println(new String(bytes));}
}
package com.xinx.redismultidatasource.listener;import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.stereotype.Component;/*** @author xinx* @date 2020/9/11 18:07*/
@Component("redisDb1ExpiredListener")
public class RedisDb1ExpiredListener implements MessageListener {@Overridepublic void onMessage(Message message, byte[] bytes) {System.out.println(this.getClass().getCanonicalName() + "监听key:" + message.toString());System.out.println(new String(bytes));}
}
Springboot redis多数据源过期监听案例相关推荐
- springboot集成redis,及过期监听
redis配置 package cn.jianml.redis.config;import cn.jianml.redis.listener.RedisMessageListener; import ...
- redis 超时key过期监听
1.修改redis配置 过期事件通过Redis的订阅与发布功能(pub/sub)来进行分发. 而对超时的监听呢,并不需要自己发布,只有修改配置文件redis.conf中的:notify-keyspac ...
- redis开启过期监听
java项目中,场景:订单没有付款到期取消订单,使用的是redis过期监听来做的,做个笔记!首先使用该功能需要下载2.8.0及以上的版本,这一部分详细内容可以访问redis官网:http://redi ...
- Redis自动过期机制之key的过期监听(7)
Redis中的自动过期机制 前言 1.使用Redis Key自动过期机制 2.Springboot整合key过期监听 2.1. 创建表 order_number 2.2核心代码 2.2.1 核心代码 ...
- redis依赖_请勿过度依赖 Redis 的过期监听
阅读本文大概需要 5 分钟. 来自:http://juejin.im/post/6844904158227595271 Redis 过期监听场景 业务中有类似等待一定时间之后执行某种行为的需求 , 比 ...
- redistemplate hash 过期时间_Redis过期监听——订单超时-取消
最近在做电商项目,涉及支付超时处理的几种方式.[记录哈使用redis监听处理] 提交订单的时候,支付-超过了有效时间则支付状态自动更新为已取消. 欢迎交流 redis过期监听的实现: 1.修改redi ...
- 服务器动态上下线监听案例
服务器动态上下线监听案例 文章目录 1.需求 2.需求分析 3.编程实现 1.先在集群上创建/servers节点 2.服务器端向Zookeeper注册代码(Server) 3.客户端代码(Client ...
- SpringBoot重点详解--事件监听
目录 自定义事件监听 Springboot 启动事件监听 Springboot 事件监听为 Bean 与 Bean 之间的消息通信提供支持:当一个 Bean 做完一件事以后,通知另一个 Bean 知晓 ...
- SpringBoot Redis多数据源配置
个人博客纯净版 SpringBoot Redis多数据源配置 | 代码搬运工 此处提供了一个SpringBoot starter插件 gitee地址 spring-boot-starter-dynam ...
最新文章
- 《重构-改善既有代码的设计》读书笔记(二)
- 收集到的一些网络工程师面试题 和大家分享下
- 添加虚拟主机 php,给 phpstudy 添加虚拟主机
- [剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]
- php新闻删除功能设计,php原生开发新闻站之删除新闻
- vc mysql free result_VC的MySQL编程
- mysql decimal 上限_关于mysql的decimal类型的外键的一个特殊限制
- HDOJ水题集合2:最短路(Dijkstra)
- Eclipse设置智能提示
- jedate选择一年范围日期插件
- win7提示由于系统注册表文件丢失或损坏,无法开机
- 物质是世界,能量是本质
- PS马卡龙渐变海报制作教程
- easyExcel 导出自动添加序号
- Mac安装brew 及安装报错的解决办法【已解决】
- ZOJ3587 Marlon's String
- CP和AP有是什么?有什么区别?
- 如何申请接入微信APP支付文章
- 关于VC中删除非空文件夹
- SAP动态安全库存设置
热门文章
- “我们没有竞争对手”专访Splunk中国区总经理严立忠
- elasticsearch analysis模块 自定义分词 拼音分词 同义词 停词
- 达人评测 iPad mini6怎么样 mini6参数配置
- 新版金色UI萝卜影视APP系统源码+Java原生开发
- 容积卡尔曼滤波CKF—目标跟踪中的应用(仿真部分—II)
- uni-app 底部tabbar设置 底部tabbar样式
- Windows 系统错误码
- 九天揽月带你玩转Ardupilot 的EKF2纸老虎
- 工具类-系统C++运行环境修复工具
- ASM Disk Discovery 最佳实践