通过SpringBoo监听redis过期key主要是添加两个配置类。
-
添加监听key的代码
package com.hczy.acl.redis.listener; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; import org.springframework.stereotype.Component; /** * @description TODO 监听所有db的过期事件__keyevent@*__:expired" */ @Component public class RedisKeyExpirationListener implements MessageListener { @Override public void onMessage(Message message, byte[] pattern) { String expiredKey = message.toString(); System.out.println("Redis过期的键:" + expiredKey); } }
-
将该配置和具体的redis连接绑定
package com.hczy.acl.redis.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.listener.PatternTopic; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import com.hczy.acl.redis.listener.RedisKeyExpirationListener; /** * TODO Redis配置 */ @SpringBootConfiguration public class RedisConfig{ @Autowired RedisConnectionFactory connectionFactory; @Bean RedisMessageListenerContainer container() { System.out.println(111); RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.addMessageListener(new RedisKeyExpirationListener(), new PatternTopic("__keyevent@0__:expired")); return container; } }
知是行之始,行是知之成