Redis之監聽失效KEY
阿新 • • 發佈:2018-11-19
SpringConfig檔案,配置listenerContainer,redisKeyExpirationListener兩個bean
package com.yj.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.listener.KeyExpirationEventMessageListener; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import com.yj.listener.RedisKeyExpirationListener; @Configuration @ComponentScan("com.yj") public class SpringConfig { @Bean RedisMessageListenerContainer listenerContainer(RedisConnectionFactory connectionFactory) { RedisMessageListenerContainer listenerContainer = new RedisMessageListenerContainer(); listenerContainer.setConnectionFactory(connectionFactory); return listenerContainer; } @Bean KeyExpirationEventMessageListener redisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) { return new RedisKeyExpirationListener(listenerContainer); } }
RedisKeyExpirationListener文繼承KeyExpirationEventMessageListener,重寫onMessage回撥方法
package com.yj.listener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.listener.KeyExpirationEventMessageListener; import org.springframework.data.redis.listener.RedisMessageListenerContainer; public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener { private static final Logger logger = LoggerFactory.getLogger(RedisKeyExpirationListener.class); public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) { super(listenerContainer); } @Override public void onMessage(Message message, byte[] pattern) { String redisKey = message.toString(); logger.info("即將要失效的Key:" + redisKey); } }
我們往redis中插入一條expire為10秒的資料,則當key失效時,會觸發監聽,打印出
2018-11-09 15:04:08.209 INFO 10360 --- [enerContainer-2] c.y.listener.RedisKeyExpirationListener : 即將要失效的Key:test