欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

SpringBoot监听Rediskey失效事件的实现代码,

来源: javaer 分享于  点击 36225 次 点评:160

SpringBoot监听Rediskey失效事件的实现代码,


目录
  • 一. 开启Redis key过期提醒
  • 二. notify-keyspace-events
  • 三. Coding
  • 四. 参考

一. 开启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的资料请关注3672js教程其它相关文章!

您可能感兴趣的文章:
  • springboot整合redis过期key监听实现订单过期的项目实践
  • SpringBoot如何监听redis Key变化事件案例详解
  • SpringBoot如何监控Redis中某个Key的变化(自定义监听器)
  • SpringBoot如何整合redis实现过期key监听事件
相关栏目:

用户点评