千家信息网

spring boot + redis实现过期事件转换为应用事件

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本篇内容介绍了"spring boot + redis实现过期事件转换为应用事件"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大
千家信息网最后更新 2025年01月24日spring boot + redis实现过期事件转换为应用事件

本篇内容介绍了"spring boot + redis实现过期事件转换为应用事件"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  1. 修改redis.conf

# K    键空间通知,以__keyspace@__为前缀# E    键事件通知,以__keysevent@__为前缀# g    del , expipre , rename 等类型无关的通用命令的通知, ...# $    String命令# l    List命令# s    Set命令# h    Hash命令# z    有序集合命令# x    过期事件(每次key过期时生成)# e    驱逐事件(当key在内存满了被清除时生成)# A    g$lshzxe的别名,因此"AKE"意味着所有的事件

notify-keyspace-events Ex

2.添加RedisMessageListenerContainer 配置

@Beanpublic RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {        RedisMessageListenerContainer container = new RedisMessageListenerContainer();        container.setConnectionFactory(connectionFactory);        return container;}

3.添加KeyExpirationEventMessageListener配置

@Beanpublic KeyExpirationEventMessageListener keyExpirationEventMessageListener(RedisMessageListenerContainer container) {        return new KeyExpirationEventMessageListener(container);}

KeyExpirationEventMessageListener内部会自动的订阅 __keyevent@*__:expired 这个Topic

4.添加一个事件监听

@Component@Slf4jpublic class RedisKeyExpireListener implements ApplicationListener {    @Override    public void onApplicationEvent(RedisKeyExpiredEvent event) {        log.debug("{}:{}:{}:{}",event.getId(),event.getKeyspace(),event.getValue(),event.getChannel());    }}

使用spring来实现可以过期事件监听非常方便,只需要简单的几个Bean的配置就可以了,spring会把redis的过期事件转化为spring的应用事件,我们只需要配一个监听器来监听RedisKeyExpiredEvent事件就可以了

"spring boot + redis实现过期事件转换为应用事件"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0