springboot监听Redis 缓存过期(Key 失效)事件

这篇具有很好参考价值的文章主要介绍了springboot监听Redis 缓存过期(Key 失效)事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、Redis配置修改

事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发, 故需要开启 redis 的事件监听与发布
修改 redis.conf 文件(Windows上是redis.windows.conf和redis.windows-service.conf)

notify-keyspace-events Ex

2、 redis的配置类开启 redis过期监听


    /**
     * 开启 redis过期监听
     * @param connectionFactory
     * @return
     */
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        return container;
    }

3、定义 key过期监听器,继承 KeyExpirationEventMessageListener

@Slf4j
@Component
public class RedisListener extends KeyExpirationEventMessageListener {

    public RedisListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    /**
     * 针对redis缓存数据失效事件,进行后续数据处理
     *
     * @param message
     * @param pattern
     */
    @Override
    public void onMessage(Message message, byte[] pattern) {
        /** key ,会把key返回,而不会将value返回*/
        String expiredKey = message.toString();
        log.info("过期缓存key:" + expiredKey);
        try {
            //登陆信息过期 若expiredKey以login开始则打印log
            if (expiredKey.startsWith("login")){
                log.info("---------redis 过期缓存处理");
            }

        } catch (Exception e) {
            log.info("---------redis 过期缓存处理 异常---------");
            e.printStackTrace();
        }

    }

}

通过开启key过期的事件通知,当key过期时,会发布过期事件;我们定义key过期事件的监听器,当key过期时,就能收到回调通知。
注意:
  1)由于Redis key过期删除是定时+惰性,当key过多时,删除会有延迟,回调通知同样会有延迟。
  2)回调通知是一次性的,没有ack机制,若收到通知后处理失败,将不再收到通知。
  3)回调通知只能拿到key,拿不到value。

使用场景:
  1)可以实现延时队列
    消息作为key,将需要延迟的时间设置为key的TTL,当key过期时,在监听器收到通知,达到延迟的效果。文章来源地址https://www.toymoban.com/news/detail-526190.html

到了这里,关于springboot监听Redis 缓存过期(Key 失效)事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis中Key的过期策略

    1.立即删除:         在设置键的过期时间时,会创建一个回调事件,当过期时间达到时, 自动执行回调事件去删除键。 但是立即删除对 cpu 是最不友好的。 2.惰性删除:         惰性删除是指某个键值过期后,此键值不会马上被删除,而是加入到 删除字典( dict和e

    2024年02月15日
    浏览(30)
  • 【Java】SpringBoot实现事件监听(异步执行)

            在Spring Boot中,事件监听是一种机制,通过该机制,你可以定义和触发自定义的事件,以及在应用程序中注册监听器来响应这些事件,提供了一种解耦的方式来处理应用程序中的事件。 文末有源码gitee地址!拉取可进行测试。 事件监听的主要组件包括: 事件(E

    2024年04月17日
    浏览(43)
  • Redis,过期监听

    应用场景,优惠卷过期,监听 配置类 监听类

    2024年02月14日
    浏览(33)
  • 监听redis过期业务处理

    配置类: 过期监听类 

    2024年02月06日
    浏览(41)
  • redis的key过期策略;主动/被动

    redis 可以设置 key 的过期时间,但这个 key 的过期时间不一定准确。 因为 redis 执行 key 过期的策略有 2种 : 主动(定时) 被动( get 的时候判断) redis 会给设置过期时间的 key 维护一个字典,然后定时轮询这个字典(每秒10次),随机抓取一批 key (20个),删除其中过期的

    2024年02月16日
    浏览(34)
  • Redis基本全局命令(含key过期策略)

    KEY 返回所有满⾜样式(pattern)的key。⽀持如下统配样式。 h?llo 匹配 hello , hallo 和 hxllo h*llo 匹配 hllo 和 heeeello h[ae]llo 匹配 hello 和 hallo 但不匹配 hillo h[^e]llo 匹配 hallo , hbllo ,…但不匹配 hello h[a-b]llo 匹配 hallo 和 hbllo 语法: 时间复杂度:O(N) 返回值:匹配pattern的所有key。 ⽰例

    2024年02月15日
    浏览(35)
  • Redis的key过期策略是怎么实现的

    这是一道经典的Redis面试题,一个Redis中可能存在很多很多的key,这些key中可能有很大一部分都有过期时间,此时Redis服务器咋知道哪些key已经过期,哪些还没过期呢? 如果直接遍历所有的key,这显然是行不通的,效率非常低!! Redis整体的策略是定期删除和惰性删除相结合。

    2024年01月19日
    浏览(28)
  • 架构师成长之路Redis第三篇|Redis key过期清除策略

    maxmemory 100mb 当我们设置的内存达到指定的内存量时, 清除策略的 配置方式决定了默认行为。Redis可以为可能导致使用更多内存的命令返回错误,也可以在每次添加新数据时清除一些旧数据以返回到指定的限制。 当达到最大内存限制时,Redis所遵循的确切行为是使用MaxMemory-

    2024年02月10日
    浏览(36)
  • redis的Key的过期策略是如何实现的?

    Key的过期策略 一个redis中可能同时存在很多很多key,这些key可能有很大一部分都有过期时间,此时,redis服务器咋知道哪些key已经过期要被删除,哪些key还没有过期? 如果直接遍历所有的key,显然是行不通的,效率极低! Redis的Key有3种过期删除策略,具体如下: 原理 :在设

    2024年02月13日
    浏览(30)
  • Redis 缓存过期及删除

    物理内存达到上限后,像磁盘空间申请虚拟内存(硬盘与内存的swap),甚至崩溃。 内存与硬盘交换 (swap) 虚拟内存,频繁I0 性能急剧下降,会造成redis内存急剧下降;  一般设置物理内存的3/4,在redis.conf中 maxmemory 1024mb 声明数据expires来存储过期时间,redis使用c语言开发,dict是字

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包