SpringBoot监听Redis key失效事件的实现代码

 更新时间:2024年02月20日 11:11:11   作者:是阿洋啊  
这篇文章给大家介绍了SpringBoot实现监听Redis key失效事件的方法,文中通过代码示例给大家讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下

一. 开启Redis key过期提醒

  • 方式一:修改配置文件

    redis.conf

# 默认 notify-keyspace-events ""
notify-keyspace-events Ex
  • 方式二:命令行开启
CONFIG SET notify-keyspace-events Ex
CONFIG GET notify-keyspace-events

二. notify-keyspace-events

notify-keyspace-events 选项的默认值为空

notify-keyspace-events 的参数可以是以下字符的任意组合, 它指定了服务器该发送哪些类型的通知。

字符发送的通知
K键空间通知,所有通知以 keyspace@ 为前缀
E键事件通知,所有通知以 keyevent@ 为前缀
gDEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知
$字符串命令的通知
l列表命令的通知
s集合命令的通知
h哈希命令的通知
z有序集合命令的通知
x过期事件:每当有过期键被删除时发送
e驱逐(evict)事件:每当有键因为 maxmemory 政策而被删除时发送
A参数 g$lshzxe 的别名

三. Coding

  • 初始化一个Spring Boot项目

  • pom.xml

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-redis</artifactId>
	</dependency>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
	</dependency>
</dependencies>
  • 定义配置类`RedisListenerConfig
@Configuration
public class RedisListenerConfig {

	@Bean
	RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
		RedisMessageListenerContainer container = new RedisMessageListenerContainer();
		container.setConnectionFactory(connectionFactory);
		return container;
	}

}
  • 定义监听器 实现KeyExpirationEventMessageListener接口
    查看源码发现,该接口监听所有db的过期事件keyevent@*:expired"定义Status1ExpirationListener监听状态1到期
@Slf4j
@Component
public class Status1ExpirationListener extends KeyExpirationEventMessageListener {

	public Status1ExpirationListener(RedisMessageListenerContainer listenerContainer) {
		super(listenerContainer);
	}

	@Autowired
	private StringRedisTemplate stringRedisTemplate;

	@Override
	public void onMessage(Message message, byte[] pattern) {
		// message.toString()可以获取失效的key
		String expiredKey = message.toString();
		// 业务处理
	}

}

定义Status2ExpirationListener监听状态2到期

@Slf4j
@Component
public class Status2ExpirationListener extends KeyExpirationEventMessageListener {

	public Status2ExpirationListener(RedisMessageListenerContainer listenerContainer) {
		super(listenerContainer);
	}

	@Override
	public void onMessage(Message message, byte[] pattern) {
		// message.toString()可以获取失效的key
		String expiredKey = message.toString();
		// 业务处理
	}

}

四. 参考

Redis keyspace notifications

以上就是SpringBoot实现监听Redis key失效事件的示例代码的详细内容,更多关于SpringBoot监听Redis key的资料请关注脚本之家其它相关文章!

相关文章

  • 使用Java高效将CSV转换为Excel的实现方法

    使用Java高效将CSV转换为Excel的实现方法

    在日常的数据处理和分析工作中,CSV文件因其轻量级和通用性而广受欢迎,然而,当我们需要进行复杂的数据分析或利用Excel强大的图表和公式功能时,将CSV数据转换为Excel文件就成了开发者们常见的需求和痛点,本文将深入探讨如何利用Java高效地将CSV转换为Excel
    2025-08-08
  • Maven发布Jar包中文乱码解决方法

    Maven发布Jar包中文乱码解决方法

    这篇文章主要介绍了Maven发布Jar包中文乱码解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Java插入修改删除数据库数据的基本方法

    Java插入修改删除数据库数据的基本方法

    这篇文章主要介绍了Java插入修改删除数据库数据的基本方法,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • Java中如何灵活获取excel中的数据

    Java中如何灵活获取excel中的数据

    这篇文章主要给大家介绍了关于Java中如何灵活获取excel中的数据,在日常工作中我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,需要的朋友可以参考下
    2023-07-07
  • java启动线程的3种方式对比分析

    java启动线程的3种方式对比分析

    这篇文章主要为大家对比分析了java启动线程的3种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 解决ObjectMapper.convertValue() 遇到的一些问题

    解决ObjectMapper.convertValue() 遇到的一些问题

    这篇文章主要介绍了解决ObjectMapper.convertValue() 遇到的一些问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 普通对象使用spring容器中的对象的实现方法

    普通对象使用spring容器中的对象的实现方法

    这篇文章主要介绍了普通对象使用spring容器中的对象的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 每天学Java!一分钟了解JRE与JDK

    每天学Java!一分钟了解JRE与JDK

    每天学Java!一分钟了解JRE与JDK,什么是JRE?什么是JDK?什么是JVM?相信通过本文大家都会有所了解,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 使用java执行定时任务示例

    使用java执行定时任务示例

    这篇文章主要介绍了使用java执行定时任务示例,需要的朋友可以参考下
    2014-04-04
  • Java中final,finally,finalize 有什么区别

    Java中final,finally,finalize 有什么区别

    这篇文章主要给大家分享的是 Java中final,finally,finalize 到底有什么区别,文章围绕final,finally,finalize的相关资料展开详细内容,具有一定的参考的价值,需要的朋友可以参考一下
    2021-11-11

最新评论