当前位置:   article > 正文

redis过期监听机制

redis过期监听机制

转自:https://www.cnblogs.com/wangyunhong/articles/16505079.html

1.redis配置

1.打开conf/redis.conf 文件,取消注释:notify-keyspace-events Ex

 2.重启redis

3.如果设置了密码需要重置密码:config set requirepass ****

3.验证配置是否生效

  步骤一:进入redis客户端:redis-cli

  步骤二:执行 CONFIG GET notify-keyspace-events ,如果有返回值证明配置成功,如果没有执行步骤三

  步骤三:执行CONFIG SET notify-keyspace-events "Ex",再查看步骤二是否有值

注意:重置密码和重置配置是否每次重启redis都需要重新设置看个人需要。

2.redis的监听conf

  1. package com.gf.ecrm.redislistenerconfig;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.data.redis.connection.RedisConnectionFactory;
  5. import org.springframework.data.redis.listener.RedisMessageListenerContainer;
  6. import javax.annotation.Resource;
  7. @Configuration
  8. public class RedisListenerConfig {
  9. @Resource
  10. private RedisConnectionFactory redisConnectionFactory;
  11. @Resource
  12. private RedisKeyExpirationListener redisExpiredListener;
  13. @Bean
  14. public RedisMessageListenerContainer redisMessageListenerContainer() {
  15. RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
  16. redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
  17. //监听所有key的过期事件
  18. redisMessageListenerContainer.addMessageListener(redisExpiredListener, redisExpiredListener.getTopic());
  19. return redisMessageListenerContainer;
  20. }
  21. }

3.监听业务代码

  1. package com.gf.ecrm.redislistenerconfig;
  2. import lombok.Data;
  3. import org.springframework.data.redis.connection.Message;
  4. import org.springframework.data.redis.connection.MessageListener;
  5. import org.springframework.data.redis.listener.PatternTopic;
  6. import org.springframework.stereotype.Component;
  7. @Data
  8. @Component
  9. public class RedisKeyExpirationListener implements MessageListener {
  10. //监听的主题(只监听redis数据库1,如果要监听redis所有的库,把1替换为*)
  11. public final PatternTopic topic = new PatternTopic("__keyevent@1__:expired");
  12. /**
  13. * Redis失效事件 key
  14. *
  15. * @param message
  16. * @param pattern
  17. */
  18. @Override
  19. public void onMessage(Message message, byte[] pattern) {
  20. String expiraKey = message.toString();
  21. System.out.println(expiraKey);
  22. }
  23. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/406106
推荐阅读
相关标签
  

闽ICP备14008679号