温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-07-01 09:55:23 来源:亿速云 阅读:196 作者:chen 栏目:大数据

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

  1. 修改redis.conf

# K    键空间通知,以__keyspace@<db>__为前缀
# E    键事件通知,以__keysevent@<db>__为前缀
# 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 配置

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

3.添加KeyExpirationEventMessageListener配置

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

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

4.添加一个事件监听

@Component
@Slf4j
public class RedisKeyExpireListener implements ApplicationListener<RedisKeyExpiredEvent> {
    @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实现过期事件转换为应用事件”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI