我使用的是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键过期的事件设置与使用代码的更多相关文章

  1. Android 设置软键盘搜索键以及监听搜索键点击事件

    如图所示,有时候为了布局美观,在搜索时没有搜索按钮,而是调用软件盘上的按钮.调用的实现只需要在XML在输入框中加入android:imeOptions="actionSearch" ...

  2. Android 如何监听返回键,弹出一个退出对话框

    android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用程序不小心点击退出键而直接退出.自己记录下这个简单的demo,备用. public class BackKeyTest ...

  3. Android 监听返回键退出程序的两种实现

    1.Android 双击返回键退出程序 思路:用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态.定 ...

  4. [转]Android 如何监听返回键,弹出一个退出对话框

    本文转自:http://blog.csdn.net/sunnyfans/article/details/8094349 Android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用 ...

  5. SpringBoot监听redis订阅监听和发布订阅

    前言 我们可以在redis中发布一条订阅到通道中,所有监听了这个通道的都可以收到这个发布的内容! redis订阅监听配置类 代码如下: RedisListenerConfig.java package ...

  6. java 监听redis事件

    第一步:利用RDM等redis连接工具查看相应事件,然后去网上搜索 一下,会有redis各种事件的说明,选择契合业务的事件: 第二步:创建监听处理类: 1 package com.lechuang.a ...

  7. Android监听返回键、Home键+再按一次返回键退出应用

    Android监听返回键需重写onKeyDown()方法 Home键keyCode==KeyEvent.KEYCODE_HOME @Override public boolean onKeyDown( ...

  8. Android 监听返回键、HOME键

    拦截返回键,HOME键,继承BaseActivity即可 import android.app.Activity; import android.content.BroadcastReceiver; ...

  9. cocos2d-x 游戏暂停界面,监听home键,返回键,Menu键 解决方案

    游戏暂停界面: cocos2d-x中游戏暂停界面提供的思路是用pushScene()和popScne(),即推进和弹出场景,当游戏暂停时,推进(pushScene())暂停场景,之前运行的场景将会自动 ...

随机推荐

  1. Vue 学习(1)

    <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta cha ...

  2. Revit 插件产品架构梳理

    一.前言        BIM:Building Information Modeling 建筑信息模型,就是将建筑的相关信息附着于模型中,以管理该建筑在设计.算量.施工.运维全生命周期的情况.创建模 ...

  3. Laravel发送邮箱消息验证

    945的密码:umywcvkrfrytfeef ENV的配置如下: MAIL_DRIVER=smtpMAIL_HOST=smtp.qq.comMAIL_PORT=25MAIL_USERNAME=XXX ...

  4. OO第二单元(电梯)单元总结

    OO第一单元(求导)单元总结 这是我们OO课程的第二个单元,这个单元的主要目的是让我们熟悉理解和掌握多线程的思想和方法.这个单元以电梯为主题,从一开始的最简单的单部傻瓜调度(FAFS)电梯到最后的多部 ...

  5. python 列表生成式,生成器&迭代器

    列表生成式: 需求:要对列表 [0,1,2,3,4,5,6,7,8,9]的每个元素加1 用列表生成式一步搞定: li = [i+1 for i in range(10)] # 这种写法就叫列表生成式 ...

  6. python2操作MySQL

    #coding=utf-8   import MySQLdb   conn = MySQLdb.connect(host='localhost',user='root',passwd='123456' ...

  7. leetcode1035

    class Solution: def maxUncrossedLines(self, A: 'List[int]', B: 'List[int]') -> int: m = len(A) n ...

  8. HQL中左连接,右连接、内连接

    左连接:left join 如A left join B 即取出A表的所有数据,由on条件关联的B表数据,有则显示,没有则为空: 右连接:right join 如 A right join B 即取出 ...

  9. MySQL GTID复制Slave跳过错误事务Id以及复制排错问题总结

    GTID复制典型的复制错误有两种:1,数据对象级别的错误,包括主库上update的数据在从库上不存在,主从逐渐冲突,库表索引等对象的冲突等等,   如果是纯粹的跳过错误的话,这一类的错误需要跳过思路是 ...

  10. 用 ghostscript 转化PDF文件为图片 的参数设置

    example: gswin32 -dSAFER -dBATCH -dNOPAUSE -r300 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sDEVICE=jp ...