依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>1.5.10.RELEASE</version>
</dependency>
配置
spring.redis.database=7
spring.redis.host=localhost
spring.redis.port=${redis.port}
spring.redis.password=${redis.password}
spring.redis.pool.max-active=100
spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle=10
spring.redis.pool.min-idle=0
spring.redis.timeout=0
spring.data.redis.repositories.enabled=true
配置类
@Configuration
public class RedisConfigForMessageListener {
@Autowired
private RedisConnectionFactory connectionFactory;
@Autowired
private RedisMessageListenerContainer redisMessageListenerContainer;
@Bean
public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
@Bean
public KeyExpiredListenForMessageListener registerListener() {
redisMessageListenerContainer.setConnectionFactory(connectionFactory);
KeyExpiredListenForMessageListener listener = new KeyExpiredListenForMessageListener();
redisMessageListenerContainer.addMessageListener(listener,new PatternTopic("__keyevent@*__:expired"));
return listener;
}
}
监听类
public class KeyExpiredListenForMessageListener extends KeyExpirationEventMessageListener {
public KeyExpiredListenForMessageListener(RedisMessageListenerContainer listenerContainer, RfidManagement rfidManagement, DeviceDao deviceDao,StringRedisTemplate redisTemplate) {
super(listenerContainer);
this.rfidManagement = rfidManagement;
this.deviceDao = deviceDao;
this.redisTemplate=redisTemplate;
}
@Override
public void onMessage(Message message, byte[] bytes) {
logger.info("redis key expire,key = {} ", message.toString());
String expireKey = message.toString();
//此处可能有乱码有乱码
}
}