springboot使用Redis,监听Redis键过期的事件设置与使用代码
我使用的是Windows下的Redis服务,所以一下Redis设置都是在Windows平台进行。
1、修改Redis配置文件
1.1:Windows下的Redis存在两个配置文件

修改带有service的配置文件才会有效。
打开配置文件,找到下面一行代码:
notify-keyspace-events ""
然后修改配置,如下图配置:

很简单,替换注释一下就好。
2、重启Redis服务
重启Redis服务有两种方式:
1、直接win+R,打开运行对话框,输入Services.msc,打开服务列表。然后找到Redis服务重启就好了。
2、打开cmd命令窗口,输入下面命令:
redis-server --service-stop

关闭成功!!
3.打开cmd命令窗口,输入下面命令:
redis-server --service-start

开启成功!!
3、在springboot项目中配置Redis配置
我的项目使用的是springboot2.0.5,所以一下配置适用springboot2.0.5项目,其他版本没试过。
两种方式:
第一种:指定:__keyevent@0__:expired,监听指定的db键的过期事件。
Redis配置第一步:
/**
* TODO Redis配置
* @author zhuzhen
* @date 16:20 2018/12/18
*/
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport { /**
* TODO 监听 Redis键过期事件
* @author zhuzhen
* @date 14:38 2018/12/21
* @param connectionFactory
* @return org.springframework.data.redis.listener.RedisMessageListenerContainer
*/
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.addMessageListener(new RedisExpiredListener(), new PatternTopic("__keyevent@0__:expired"));
return container;
} }
Redis配置第二步:
实现MessageListener接口:
/**
* @author zhuzhen
* @version 1.0
* @description TODO 自定义Redis过期监听事件
* @className com.nongcai.rabbitmq.demo.redis.RedisExpiredListener
* @date 2018/12/21 14:42
*/
public class RedisExpiredListener implements MessageListener { @Override
public void onMessage(Message message, byte[] bytes) {
// 建议使用: valueSerializer
byte[] body = message.getBody();
byte[] channel = message.getChannel();
//Redis数据的键
String redisId = new String(body); System.out.println("onMessage >> " );
System.out.println(String.format("channel: %s \n body: %s \n bytes: %s"
,new String(channel), new String(body), new String(bytes))); }
}
第二种:监听所有的db键的过期事件。
Redis配置第一步:配置监听bean
/**
* TODO 监听 Redis键过期事件
* @author zhuzhen
* @date 14:38 2018/12/21
* @param connectionFactory
* @return org.springframework.data.redis.listener.RedisMessageListenerContainer
*/
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) { RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
// container.addMessageListener(new RedisExpiredListener(), new PatternTopic("__keyevent@0__:expired"));
return container;
}
Redis配置第二步:
/**
* @author zhuzhen
* @version 1.0
* @description TODO 监听所有db的过期事件__keyevent@*__:expired"
* @className com.nongcai.rabbitmq.demo.redis.RedisKeyExpirationListener
* @date 2018/12/21 14:39
*/
@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener { public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
} @Override
public void onMessage(Message message, byte[] pattern) {
// 用户做自己的业务处理即可,注意message.toString()可以获取失效的key
System.out.println("message>>> " + message);
System.out.println("pattern>>> " + new String(pattern));
String expiredKey = message.toString();
System.out.println("Redis的键:" + expiredKey); }
}
自此,监听Redis键过期事件配置完成。
spring关于Redis文章地址:https://spring.io/guides/gs/messaging-redis/
springboot使用Redis,监听Redis键过期的事件设置与使用代码的更多相关文章
- Android 设置软键盘搜索键以及监听搜索键点击事件
如图所示,有时候为了布局美观,在搜索时没有搜索按钮,而是调用软件盘上的按钮.调用的实现只需要在XML在输入框中加入android:imeOptions="actionSearch" ...
- Android 如何监听返回键,弹出一个退出对话框
android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用程序不小心点击退出键而直接退出.自己记录下这个简单的demo,备用. public class BackKeyTest ...
- Android 监听返回键退出程序的两种实现
1.Android 双击返回键退出程序 思路:用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态.定 ...
- [转]Android 如何监听返回键,弹出一个退出对话框
本文转自:http://blog.csdn.net/sunnyfans/article/details/8094349 Android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用 ...
- SpringBoot监听redis订阅监听和发布订阅
前言 我们可以在redis中发布一条订阅到通道中,所有监听了这个通道的都可以收到这个发布的内容! redis订阅监听配置类 代码如下: RedisListenerConfig.java package ...
- java 监听redis事件
第一步:利用RDM等redis连接工具查看相应事件,然后去网上搜索 一下,会有redis各种事件的说明,选择契合业务的事件: 第二步:创建监听处理类: 1 package com.lechuang.a ...
- Android监听返回键、Home键+再按一次返回键退出应用
Android监听返回键需重写onKeyDown()方法 Home键keyCode==KeyEvent.KEYCODE_HOME @Override public boolean onKeyDown( ...
- Android 监听返回键、HOME键
拦截返回键,HOME键,继承BaseActivity即可 import android.app.Activity; import android.content.BroadcastReceiver; ...
- cocos2d-x 游戏暂停界面,监听home键,返回键,Menu键 解决方案
游戏暂停界面: cocos2d-x中游戏暂停界面提供的思路是用pushScene()和popScne(),即推进和弹出场景,当游戏暂停时,推进(pushScene())暂停场景,之前运行的场景将会自动 ...
随机推荐
- 配置samba的流程
1.关闭防火墙和selinuxservice iptables stopsetenforce 02.配置本地yummount /dev/cdrom /mediacd /etc/yum.repos.dc ...
- DLC 基本逻辑运算
逻辑代数:分析设计数字电路的数学基础是逻辑代数 变量的取值只能是 0 1 逻辑代数中只有三种基本逻辑运算,即 与 或 非 与逻辑运算: 只有决定一件事情的全部条件都具备时,这事件才成立.这样的因果关系 ...
- IntelliJ IDEA spring boot 远程Ddbug调试
一.idea配置 1.在idea中点击右上角的 "Edit Configurations" 2.点击+,选择Remote 3.在Name处为此次Dbug起个名字,在Host添加测试 ...
- java.lang.StackOverflowError
在开发中经常会遇到内存溢出的情况,大部分原因是因为:代码中有死循环.过度递归等情况 解决办法:看报错 找到是因为死循环还是过度递归,改掉即可 我的报错原因是使用了 new Gson.().toJson ...
- js 向上、向下取整
// 1.只保留整数部分(丢弃小数部分) parseInt(5.1234);// 5// 2.向下取整(<= 该数值的最大整数)和parseInt()一样Math.floor(5.1234);/ ...
- 嵌入式linux——点亮led灯(二)
刚才在jz2440板子上写了一个点亮中间led的程序,前前后后十几分钟才好.最终代码 本节内容: 1. 汇编点灯 2. C点灯 3. 参数选择点灯 4. 按键点灯 1. 汇编点灯 .text .glo ...
- django之关联field 描述子
"""Accessors for related objects. When a field defines a relation between two models, ...
- SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端、Eureka 服务信息、Eureka 发现管理、Eureka 安全配置、Eureka-HA(高可用) 机制、Eureka 服务打包部署)
1.概念:Eureka 服务发现框架 2.具体内容 对于服务发现框架可以简单的理解为服务的注册以及使用操作步骤,例如:在 ZooKeeper 组件,这个组件里面已经明确的描述了一个服务的注册以及发现操 ...
- Base64图片转Blob对象
//将Base64图片转成Blob对象 //@args: base64Url:编码字符串,contentType:类型. function base64UrltoBlob(base64Url, con ...
- C++字符串按照指定规则切割的功能模板类,常用的一段检测记录运行时间的代码
template <typename T> struct vector_split { typedef typename std::vector<T>::iterator it ...