springboot使用redis监听过期键

首先需要修改redis配置文件

打开redis配置文件,找到notify- keyspace- events “EX”
默认会是注掉的,下面会有一个notify- keyspace- events “”
这个是没有注掉的,直接将notify- keyspace- events “”注掉,再将notify- keyspace- events “EX”的注释放开即可;
在这里插入图片描述
修改为这个样子就可以了

导入依赖
<dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
编写代码

消息处理类

package com.mood.Utils;

import org.springframework.stereotype.Component;

@Component
public class RedisMessageReceiver {
    /**
     * 接收redis消息,并处理
     *
     * @param message 过期的redis key
     */
    public void receiveMessage(String message) {
        System.out.println("通知的key是:" + message);
    }
}

然后是设置监听频道,这在redis配置类中设置

	@Resource
    RedisConnectionFactory factory;

    /**
     * redis 订阅频道
     *
     * //RedisConnectionFactory connectionFactory
     * @param listenerAdapter
     * @return
     */
     @Bean
     public RedisMessageListenerContainer container(MessageListenerAdapter listenerAdapter) {

        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(factory);
        // 订阅通道,key过期时通知
        container.addMessageListener(listenerAdapter, new PatternTopic("__keyevent@0__:expired"));
        container.addMessageListener(listenerAdapter, new PatternTopic("__keyevent@1__:expired"));
        // 可以订阅多个通道

        return container;
    }
 	/**
     * 配置redis事件监听处理器
     *
     * @param receiver
     * @return
     */
    @Bean
    public MessageListenerAdapter listenerAdapter(RedisMessageReceiver receiver) {
        return new MessageListenerAdapter(receiver, "receiveMessage");
    }

这样就可以监听到订阅的数据库中的过期键了,后续可以在消息处理类中对过期键进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值