Redis Key过期回调功能
前言
Redis事件监听回调是一个非常好用的功能,可以用于定时完成某个特定功能,如:30分钟的支付有效期,24小时的vip体验,均可以通过Redis的key过期触发事件回调来完成。
一、开启Redis的过期回调功能
1.1 修改redis.conf文件
vim redis.conf
1.2 开启notify-keyspace-events Ex的配置
1.3 重启redis服务
### 连接redis客户端(redis-cli),使用shutwodn命令
./redis-cli
shutdown
### 重启redis服务
./redis-server redis.conf
二、在SpringBoot程序中配置监听器响应功能
2.1 引入依赖包
<!-- redis 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.2 编写监听器实现回调功能
在写监听器前需要先编写一个配置类,将RedisMessageListenerContainer 类的实例手动注入容器。
因为在写监听器的构造函数时,RedisMessageListenerContainer 实例无法自动注入,需要子编写配置类,注入容器中。
配置类代码如下(直接复制即可):
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
@Configuration
public class RedisListenerConfig {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
}
监听器代码如下:
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;
/**
* Redis事件监听器
*/
@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
/**
* 重写omMessage方法,当Redis中的Key过期时会执行该方法
*/
@Override
public void onMessage(Message message, byte[] pattern) {
// 过期的key
String expireKey = message.toString();
// 根据key,执行自己需要实现的功能。
}
}
总结
Redis的事件回调功能作用非常强大,能够解决非常多的限时任务。使用好该功能能够帮你解决非常多的问题。定制自己的解决方案只需要两步:
1.redis配置文件中开启事件监听功能。
2.定制自己的监听器,实现特定功能。
注意:当redis的数据被淘汰策略淘汰时,尽管时间没有过期,但是也会触发事件。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhgkhb
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01