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())暂停场景,之前运行的场景将会自动 ...
随机推荐
- Vue 学习(1)
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta cha ...
- Revit 插件产品架构梳理
一.前言 BIM:Building Information Modeling 建筑信息模型,就是将建筑的相关信息附着于模型中,以管理该建筑在设计.算量.施工.运维全生命周期的情况.创建模 ...
- Laravel发送邮箱消息验证
945的密码:umywcvkrfrytfeef ENV的配置如下: MAIL_DRIVER=smtpMAIL_HOST=smtp.qq.comMAIL_PORT=25MAIL_USERNAME=XXX ...
- OO第二单元(电梯)单元总结
OO第一单元(求导)单元总结 这是我们OO课程的第二个单元,这个单元的主要目的是让我们熟悉理解和掌握多线程的思想和方法.这个单元以电梯为主题,从一开始的最简单的单部傻瓜调度(FAFS)电梯到最后的多部 ...
- python 列表生成式,生成器&迭代器
列表生成式: 需求:要对列表 [0,1,2,3,4,5,6,7,8,9]的每个元素加1 用列表生成式一步搞定: li = [i+1 for i in range(10)] # 这种写法就叫列表生成式 ...
- python2操作MySQL
#coding=utf-8 import MySQLdb conn = MySQLdb.connect(host='localhost',user='root',passwd='123456' ...
- leetcode1035
class Solution: def maxUncrossedLines(self, A: 'List[int]', B: 'List[int]') -> int: m = len(A) n ...
- HQL中左连接,右连接、内连接
左连接:left join 如A left join B 即取出A表的所有数据,由on条件关联的B表数据,有则显示,没有则为空: 右连接:right join 如 A right join B 即取出 ...
- MySQL GTID复制Slave跳过错误事务Id以及复制排错问题总结
GTID复制典型的复制错误有两种:1,数据对象级别的错误,包括主库上update的数据在从库上不存在,主从逐渐冲突,库表索引等对象的冲突等等, 如果是纯粹的跳过错误的话,这一类的错误需要跳过思路是 ...
- 用 ghostscript 转化PDF文件为图片 的参数设置
example: gswin32 -dSAFER -dBATCH -dNOPAUSE -r300 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sDEVICE=jp ...