springboot+redis过期事件监听实现过程解析

 更新时间:2020年03月27日 09:32:14   作者:一步一高  
这篇文章主要介绍了springboot+redis过期事件监听实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1 修改 redis.conf配置文件:

K Keyspace events, published with keyspace@ prefix事件
E Keyevent events, published with keyevent@ prefix
g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, …
$ String commands
l List commands
s Set commands
h Hash commands
z Sorted set commands
x Expired events (events generated every time a key expires)
e Evicted events (events generated when a key is evicted for maxmemory)
A Alias for g$lshzxe, so that the “AKE” string means all the events.
redis.conf 的默认的配置是:notify-keyspace-events ""
我们需要改为:notify-keyspace-events Ex
即对应上面的键的过期事件。修改玩这个重启一下redis

2 客户端来监听redis的过期事件:

@Configuration
public class RedisListenerConfig {
  @Bean
  RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {

    RedisMessageListenerContainer container = new RedisMessageListenerContainer();
    container.setConnectionFactory(connectionFactory);
    return container;
  }
}

3.书写一个监听器

@Slf4j
@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
  public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
    super(listenerContainer);
  }
  @Override
  public void onMessage(Message message, byte[] pattern) {
    String expiredKey = message.toString();
    log.info("expiredKey========="+expiredKey);
  }

4.查询方法中随便加了两个表中的不同id,一个30s,一个27s。

redisUtil.set("UserId"+user.get(0).getId(),user.get(0).getId(),30);
redisUtil.set("UserInfoId"+userInfo.get(0).getId(),userInfo.get(0).getId(),27);

控制台输出:

需要注意的是:

过期监听消息中返回的是,过期的键的key值,是没有返回value的

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Springboot项目中运用vue+ElementUI+echarts前后端交互实现动态圆环图(推荐)

    Springboot项目中运用vue+ElementUI+echarts前后端交互实现动态圆环图(推荐)

    今天给大家带来一篇教程关于Springboot项目中运用vue+ElementUI+echarts前后端交互实现动态圆环图的技能,包括环境配置及圆环图前端后端实现代码,感兴趣的朋友一起看看吧
    2021-06-06
  • 教你springboot+dubbo快速启动的方法

    教你springboot+dubbo快速启动的方法

    这篇文章主要介绍了springboot+dubbo快速启动的方法,dubbo的角色广泛的分为三类provider,comsumer,注册中心,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下
    2022-04-04
  • java中public class与class的区别详解

    java中public class与class的区别详解

    以下是对java中public class与class的区别进行了分析介绍,需要的朋友可以过来参考下
    2013-07-07
  • 基于java中集合的概念(详解)

    基于java中集合的概念(详解)

    下面小编就为大家带来一篇基于java中集合的概念(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java跳出当前的多重嵌套循环的五种方法

    Java跳出当前的多重嵌套循环的五种方法

    在Java编程中,跳出多重嵌套循环可以使用break语句、标号与break组合、return语句、标志变量和异常处理五种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • 浅析JavaWeb项目架构之Redis分布式日志队列

    浅析JavaWeb项目架构之Redis分布式日志队列

    架构、分布式、日志队列,标题自己都看着唬人,其实就是一个日志收集的功能,只不过中间加了一个Redis做消息队列罢了。下面通过本文给大家分享JavaWeb项目架构之Redis分布式日志队列,感兴趣的朋友一起看看吧
    2018-01-01
  • Java文件过滤器实现按条件筛选文件

    Java文件过滤器实现按条件筛选文件

    本文主要介绍了Java文件过滤器实现按条件筛选文件,文件过滤器是在文件处理中起到重要作用的工具,它可以用来筛选文件并根据特定的条件进行过滤,下面就来介绍一下
    2024-04-04
  • Springboot配置Swagger2登录密码的实现

    Springboot配置Swagger2登录密码的实现

    本文主要介绍了Springboot配置Swagger2登录密码的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • SpringBoot从2.7.x 升级到3.3注意事项

    SpringBoot从2.7.x 升级到3.3注意事项

    从SpringBoot 2.7.x升级到3.3涉及多个重要变更,特别是因为 Spring Boot 3.x 系列基于 Jakarta EE 9,而不再使用 Java EE,本文就来详细的介绍一下,感兴趣的可以了解一下
    2024-09-09
  • SpringBoot中使用Guava实现单机令牌桶限流的示例

    SpringBoot中使用Guava实现单机令牌桶限流的示例

    本文主要介绍了SpringBoot中使用Guava实现单机令牌桶限流的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06

最新评论