SpringBoot Redis key failure monitor usage

Redis key using the failure detection service to process, e.g., the timing to cancel the order 30 minutes.

1, redis.conf configuration file to add configuration

notify-keyspace-events Ex

2, the following code

  1, start the class to add annotations 

@ComponentScan

  2, add the Container configuration

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisListenerConfig {

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 处理乱码
     *
     * @return
     */
    @Bean
    public RedisTemplate redisTemplateInit() {
        // key序列化
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //val实例化
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }

    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        return container;
    }
}

  3, failure to monitor key

import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {

    @Resource
    private RedisTemplate redisTemplate;

    publicRedisKeyExpirationListener (RedisMessageListenerContainer listenerContainer) {
         Super (listenerContainer); 
    } 

    / ** 
     * redis failure data for event data processing 
     * 
     * @param Message 
     * @param pattern
      * / 
    @Override 
    public  void the onMessage (the Message Message, byte [] pattern) { 
        String expireKey = new new String (message.getBody ()); 
        System.out.println ( "body = [" + expireKey + "]" ); 
    } 
}

 

 

  

Guess you like

Origin www.cnblogs.com/zj-dandelion/p/12161019.html