zoukankan      html  css  js  c++  java
  • java接收redis过期的

    监听过期key,其实同redis的作为中间件差不多.具体使用跟业务来,
    注意,redis过期的key并不是立马过期删除的,具体参见:https://blog.csdn.net/Jack__Frost/article/details/71216098

    首先需要配置keyExpirationListenerContainer对应的bean;

     @Bean
        //key过期监听,指定数据库
        RedisMessageListenerContainer keyExpirationListenerContainer(RedisMessageListener listener) {
            RedisMessageListenerContainer listenerContainer = new RedisMessageListenerContainer();
            listenerContainer.setConnectionFactory(taskConnectionFactory());
            listenerContainer.addMessageListener(listener, new PatternTopic("__keyevent@" + redisDb + "__:expired"));
            return listenerContainer;
        }
    

    具体的PatternTopic配置有很多,我大概看了下,常用的就是"__keyevent@" + redisDb + "__:expired"监听指定数据库的key过期.
    然后还要自己写个listener,即可以实现MessageListener,也可以继承MessageListenerAdapter都可以,只监听key过期都可以没啥具体区别,继承的话主要是使用redis作为中间件,用来发布订阅使用的多:

    package net.rdd.listener;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.data.redis.connection.Message;
    import org.springframework.data.redis.connection.MessageListener;
    import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
    import org.springframework.data.redis.serializer.RedisSerializer;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    import org.springframework.stereotype.Component;
    
    @Component
    public class RedisMessageListener extends MessageListenerAdapter {
    //public class RedisMessageListener implements MessageListener {
    
        private final Logger log = LoggerFactory.getLogger(getClass());
    
    	private final RedisSerializer<String> stringSerializer = new StringRedisSerializer();
    	
    	@Override
    	//key过期会执行这个方法
    	public void onMessage(Message message, byte[] pattern) {
    		
    		String key = stringSerializer.deserialize(message.getBody());
    
    		System.out.println(key);
    	}
    }
    
    

    注意在redis配置文件中注意的:
    在这里插入图片描述
    注意将下面默认的注释掉.
    然后window启动指定对应的配置文件,否则会使用默认的.版本一定要注意3.0以上

    redis-server.exe redis.windows.conf
    

    即可

    redis的版本也有要求,配置也需要改一下:https://blog.csdn.net/qq_38366063/article/details/84028785
    具体配置源码参见我的另外一篇博客:https://blog.csdn.net/qq_38366063/article/details/84063459

    世界上所有的不公平都是由于当事人能力不足造成的.
  • 相关阅读:
    ArrayList和Vector的比较
    ExtJs与jQuery的比较
    列表类型的内建函数
    序列类型函数
    SQL函数
    HTTP状态码
    序列切片
    数值运算
    数值类型转换
    Python中is和==的区别
  • 原文地址:https://www.cnblogs.com/javayida/p/13347088.html
Copyright © 2011-2022 走看看