实际在我们开发过程中,有一些业务场景需要能够在一段时间之后能自动变更数据状态,如优惠券,特价商品,购物车等,这个时候如果实现基于redis,就可以使用下面的方案。

一,在系统添加配置类

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 RedisExpirationConfig {@BeanRedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(connectionFactory);return container;}
}

二,添加对应的业务实现监听器

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;import java.io.File;/*** redis 消息过期异步通知监听器** */
@Component
public class RedisMessageListener extends KeyExpirationEventMessageListener {private static Logger logger = LoggerFactory.getLogger(RedisMessageListener.class);@Autowiredprivate RedisTemplate<String, String> redisTemplate;public RedisMessageListener(RedisMessageListenerContainer listenerContainer) {super(listenerContainer);}@Overridepublic void onMessage(Message message, byte[] pattern) {logger.info("收到 redis 过期异步通知:{}", message.toString());String redisKey = (String) redisTemplate.getValueSerializer().deserialize(message.getBody());logger.info("redisKey : {}", redisKey);//针对特定的key进行处理if (redisKey.startsWith("rediskey")){try {              //TODO}catch (Exception exp){logger.info("业务处理失败:" + exp.getMessage());}}}
}

三,针对业务实现对应过期消息的处理

在TODO的标识上面,针对不同业务设置的redis key,分成多个业务处理。建议key的设置使用 XXX:XXX:XXX 这种模式 eg:saas:file:key:业务参数,效果如图所示:

采用上述构建key的工具效果图

上述方法若有错误问题,请给我留言一下。

redistemplate hash 过期时间_Redis开发 —— 过期消息通知实现(Springboot)相关推荐

  1. stringredistemplate设置过期时间_Redis的过期删除策略和内存淘汰机制

    Redis的key可以设置过期时间,那是否意味着时间一到就会马上被删除呢? Redis的数据存储大小是有限的,假如内存不足Redis有什么应对策略呢? 本篇文章将介绍一下Redis的过期策略和内存淘汰 ...

  2. redis map 过期时间_redis的过期时间和过期删除机制

    一:设置过期时间 redis有四种命令可以用于设置键的生存时间和过期时间: EXPIRE <KEY> <TTL> : 将键的生存时间设为 ttl 秒 PEXPIRE <K ...

  3. c# redis 如何设置过期时间_Redis 过期时间与内存管理

    http://www.redis.cn/commands/expire.html http://www.redis.cn/topics/lru-cache.html 内存管理 当 Redis 作为缓存 ...

  4. java redis set 过期时间_redis分布式锁自动延长过期时间

    分布式系统概念与设计(原书第5版) 93.8元 包邮 (需用券) 去购买 > 背景项目组已经有个分布式锁注解(参考前文<记一次分布式锁注解化>),但是在设置锁过期时间时,需要去预估业 ...

  5. 过期时间_2020年最新航空里程过期时间及避免过期方法总结

    [2020.2 更新] 近几年来主要有如下变化:UA 里程永不过期了,Southwest 里程永不过期了,Asia Miles 里程可以通过里程变动续命了,Flying Blue 里程变成24个月过期 ...

  6. redis hash field过期时间_Redis系列-Redis数据类型

    1.全局命令 1.1查看所有键 127.0.0.1:6379> set k1 111OK127.0.0.1:6379> set k2 222OK127.0.0.1:6379> set ...

  7. c# redis 如何设置过期时间_Redis Hash存储token、及设置过期时间

    相信大家在很多业务场景都会遇到对数据设置过期时间,如安全认证token.短信验证码等.一般我们的解决有几种:存redis.存数据库.实时计算(如JWT),不管使用哪种方式,需求就是过期了对数据的清理. ...

  8. redistemplate.opsforhash设置过期时间_Redis详解(十一)------ 过期删除策略和内存淘汰策略...

    大家好,我是可乐,一个专注原创,乐于分享的程序猿. 本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读.回复<电子书>有我为大家特别筛选的海量免费书籍资料 在介绍这篇文章之前,我 ...

  9. redis map 过期时间_redis 过期时间

    设置key的过期时间,超过时间后,将会自动删除该key.在Redis的术语中一个key的相关超时是不确定的. 超时后只有对key执行DEL命令或者SET命令或者GETSET时才会清除. 这意味着,从概 ...

最新文章

  1. 超酷炫!Facebook用深度学习和弱监督学习绘制全球精准道路图
  2. Broadcast Receiver广播接收器
  3. pybind opencv mat
  4. STM32串口+DMA使用1
  5. 【BZOJ 1036】[ZJOI2008]树的统计Count
  6. gcc a.c 究竟经历了什么
  7. MapReduce概述
  8. ASP.NET中实现Flash与.NET的紧密集成(转,没看,有空研究一下)
  9. 如何debug web worker
  10. 静态数组和动态数组 内存分布
  11. 【WPF】设置TextBox内容为空时的提示文字
  12. 大话数据结构—栈与队列
  13. python selenium对象怎么序列化_python selenium爬取斗鱼
  14. python 模糊匹配ftp文件_使用python实现正则匹配检索远端FTP目录下的文件
  15. 防止网页后退--禁止缓存
  16. The following tasks did not complete: first Did you forget to signal async completion?
  17. 字典树(Trie树)的实现及应用
  18. 电子科技大学--大数据论坛--相关资料
  19. vue项目中使用swiper 实现无缝滚动
  20. BypassUAC方式总结

热门文章

  1. Python爬取京东商品信息以及评论存进MySQL
  2. Pycharm解决中文字体大小不一致问题
  3. 1119 Pre- and Post-order Traversals (30 分)【难度: 难 / 知识点: 树的构建】
  4. 1082 Read Number in Chinese (25 分)【难 / 模拟 字符串】
  5. 1008 Elevator (20 分)【难度: 简单 / 知识点: 模拟】
  6. Oracle 的基本特点,并完整描述安装过程
  7. 【Spring-Boot】【入门 01】第一个 Spring Boot 程序
  8. 【Java】 5.6 类的继承
  9. 数据库密码配置项都不加密?心也太大了!
  10. java反射的优化_请问Java反射的性能为什么比直接调用慢一个数量级左右?