监听redis过期业务处理

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

配置类:

package com.test

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
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.core.script.DefaultRedisScript;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * redis配置
 *
 * @author saas
 */
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {

    @Autowired
    private RedisConnectionFactory redisConnectionFactory;

   // 监听
    @Bean
    public RedisMessageListenerContainer redisMessageListenerContainer() {
        RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
        redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
        return redisMessageListenerContainer;
    }

// 序列化
    @Bean
    @SuppressWarnings(value = {"unchecked", "rawtypes"})
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<Object, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(connectionFactory);

        FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);

        // 使用StringRedisSerializer来序列化和反序列化redis的key值
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(serializer);

        // Hash的key也采用StringRedisSerializer的序列化方式
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setHashValueSerializer(serializer);

        template.afterPropertiesSet();
        return template;
    }
}

过期监听类 文章来源地址https://www.toymoban.com/news/detail-735417.html

@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Resource
    private RedisService redisService;

    /**
     * @param listenerContainer must not be {@literal null}.
     * listenerContainer 需要在配置类中加载
     */
    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }


    @Override
    public void onMessage(Message message, byte[] pattern) {
        logger.info("过期key:" + message.toString());
        String key = message.toString();
        // 业务处理
    }

}

到了这里,关于监听redis过期业务处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Java键盘事件处理及监听机制解析

    Java事件处理采用了委派事件模型。在这个模型中,当事件发生时,产生事件的对象将事件信息传递给事件的监听者进行处理。在Java中,事件源是产生事件的对象,比如窗口、按钮等;事件是承载事件源状态改变时的对象,比如键盘事件、鼠标事件、窗口事件等等。当事件发

    2024年02月13日
    浏览(27)
  • Java--业务场景:在Spring项目启动时加载Java枚举类到Redis中(补充)

    前言 通过Java–业务场景:在Spring项目启动时加载Java枚举类到Redis中,我们成功将Java项目里的枚举类加载到Redis中了,接下来我们只需要写接口获取需要的枚举值数据就可以了,下面一起来编写这个接口吧。 步骤 在EnumService接口创建一个方法,负责查询枚举类的值,供接口调用

    2024年01月25日
    浏览(25)
  • python脚本监听域名证书过期时间,并将通知消息到钉钉

    版本一: 执行脚本带上 --dingtalk-webhook和–domains后指定钉钉token和域名 脚本如下 版本二 执行脚本带上 --dingtalk-webhook、–secret和–domains后指定钉钉token、密钥和域名 终极版本 python执行脚本时指定配置文件 config.json配置文件内容如下 脚本内容如下 执行结果 钉钉告警消息如下

    2024年02月06日
    浏览(31)
  • 【Redis】Redis 通用命令、键的过期策略

    Redis 有许多种数据结构,但是这些数据结构的 key 的类型都是字符串类型的(所以说,Redis 不同的数据结构都是针对于 value 而言的)。正因如此,对应相同类型的 key 来说,就有一些通用的来操作 Redis 的命令。 SET 和 GET 可以说是 Redis 中最基础也是最核心的两个命令了,Redi

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

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

    2024年02月13日
    浏览(33)
  • redis内存回收——过期、淘汰

    redis内存设置过大时会增加同步等操作的复杂度 惰性删除 访问时,检查过期时间,删除 已过期但不访问的数据,永远存在,占据内存 周期删除 定期抽样部分key检查过期时间,删除 SLOW redis初始化时设置定期任务 默认每秒执行10次,每个周期100ms 执行清理耗时不超过一次执行

    2023年04月11日
    浏览(25)
  • redis过期提醒

    有一次看redis的配置文件发现一个notify-keyspace-events配置,注释里边长篇大论的,那我得看看这是干啥的,看完注释内容,发现不得了了,redis竟然还有过期提醒的功能 接下来得大家解释一下: 首先呢,这个功能是基于发布订阅的,通过key的事件来触发发布订阅。相关参数有

    2024年02月05日
    浏览(24)
  • Redis - 数据过期策略

    Redis提供了两种数据过期策略 惰性删除 和 定期删除 当某个key过期时,不马上删除,而是在调用时,再判断它是否过期,如果过期再删除它 优点 : 对CPU友好,对于很多用不到的key,不用浪费时间进行过期检查 缺点 : 对内存不友好,如果某个key过期了,但一直没使用,那么

    2024年02月14日
    浏览(29)
  • Redis过期策略

    Redis 使用的过期删除策略是什么? Redis 是可以对 key 设置过期时间的,因此需要有相应的机制将已过期的键值对删除,而做这个工作的就是过期键值删除策略。 每当我们对一个 key 设置了过期时间时,Redis 会把该 key 带上过期时间存储到一个 过期字典 (expires dict)中,也就是

    2024年02月09日
    浏览(70)
  • redis设置过期时间

    Redis 设置过期时间的意思是为一个 key 设置一个时间窗口,在这个时间窗口内,该 key 可以被访问和使用,到达时间窗口后,Redis 会自动删除过期的 key。可以使用 Redis 的 expire 命令或其他相关命令来设置一个 key 的过期时间。设置过期时间可以有效控制 Redis 中存储的数据量,

    2024年02月01日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包