当前位置:网站首页>【redis】redis之过期监听
【redis】redis之过期监听
2022-08-09 08:00:00 【Ctrl练习生-谢哥哥blog】
redis之过期监听
使用场景:在我们项目中,需要把支付超时的订单,更新状态并回退库存等操作。在这里,使用redis过期监听就能做到
↓↓↓下面上代码↓↓↓
首先需要redis监听生效就需要配置如下代码
yml文件
RedisListenerConfig.java
@Slf4j
@Configuration
public class RedisListenerConfig {
@Bean
public RedisMessageListenerContainer container(RedisConnectionFactory redisConnectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(redisConnectionFactory);
log.info("redis监听配置生效");
return container;
}
}
使用
RedisKeyExpirationListener.java
@Slf4j
@Configuration
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
@Value("${spring.redis.database}")
private Integer redisDatabase;
private final RedisTemplate<String, String> redisTemplate;
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer, RedisTemplate<String, String> redisTemplate) {
super(listenerContainer);
this.redisTemplate = redisTemplate;
}
@Override
public void onMessage(Message message, byte[] bytes) {
log.info("过期监听事件启动");
RedisSerializer<?> serializer = redisTemplate.getValueSerializer();
String channel = String.valueOf(serializer.deserialize(message.getChannel()));
// 获取过期的Key值
String body = String.valueOf(serializer.deserialize(message.getBody()));
// DB0 key过期监听
if (StrUtil.format("[email protected]{}__:expired", redisDatabase).equals(channel)) {
System.out.println("第" + redisDatabase + "个DB库的key过期,key:" + body);
}
}
}
我们测试一下
等待30秒…
结果如下
总结
如果觉得不错,可以点赞+收藏或者关注下博主。感谢阅读!
边栏推荐
猜你喜欢
随机推荐
(二)、灰色预测模型(GM1,1)
“互联网+”大学生创新创业大赛经历
系统安全及应用
不同风格的Flask-restful
图像处理(一)图像基础
可能导致Loadrunner检查点中savecount为0的分析
[STL]vector
权限(上)
The story of the disappearing WLAN of Windows 10 computers
MDK Keil debug时, watch1中全局变量不更新
监视文本框的输入
VMware virtual machine cannot be connected to the Internet after forced shutdown
配置本地yum源仓库
世界顶尖3D Web端渲染引擎:HOOPS Communicator技术介绍(一)
libtorch示例
【无标题】
pragma comment的使用(转载)重新排版
继承中的运算符重载:输入输出的传奇
[STL]list
练习电影卡片、过渡、动画、变形、旋转,练习时钟、立方体、缩放