1. 简单定时任务解决方案:使用rediskeyspace notifications(键失效后通知事件)
  2. 需要注意此功能是在redis 2.8版本以后推出的,因此你服务器上的reids最少要是2.8版本以上;
  3.  
  4. 1.开启redis key过期提醒
    修改redis相关事件配置。找到redis配置文件redis.conf,查看“notify-keyspace-events”的配置项,如果没有,添加“notify-keyspace-events Ex”,如果有值,添加Ex,相关参数说明如下:
  1. Kkeyspace事件,事件以__keyspace@<db>__为前缀进行发布;
  2. Ekeyevent事件,事件以__keyevent@<db>__为前缀进行发布;
  3. g:一般性的,非特定类型的命令,比如delexpirerename等;
  4. $:字符串特定命令;
  5. l:列表特定命令;
  6. s:集合特定命令;
  7. h:哈希特定命令;
  8. z:有序集合特定命令;
  9. x:过期事件,当某个键过期并删除时会产生该事件;
  10. e:驱逐事件,当某个键因maxmemore策略而被删除时,产生该事件;
  11. Ag$lshzxe的别名,因此”AKE”意味着所有事件。

2.在springboot中使用  

  1. <!-- redis -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-data-redis</artifactId>
  5. </dependency>

3.定义配置RedisListenerConfig 

  1. @Configuration
  2. public class RedisTimerConfiguration {
  3.  
  4. private Logger logger = LoggerFactory.getLogger(RedisTimerConfiguration.class);
  5. @Autowired
  6. private RedisConnectionFactory redisConnectionFactory;
  7. @Bean
  8. public RedisMessageListenerContainer redisMessageListenerContainer() {
  9. RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
  10. redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
  11. return redisMessageListenerContainer;
  12. }
  13. }

4.定义监听器,实现KeyExpirationEventMessageListener接口,查看源码发现,该接口监听所有db的过期事件keyevent@*:expired"

  1. @Component
  2. public class RedisTask extends KeyExpirationEventMessageListener {
  3.  
  4. private Logger logger = LoggerFactory.getLogger(RedisTask.class);
  5.  
  6. public RedisTask(RedisMessageListenerContainer listenerContainer) {
  7. super(listenerContainer);
  8. }
  9. @Override
  10. public void onMessage(Message message, byte[] pattern) {
  11. String channel = new String(message.getChannel(), StandardCharsets.UTF_8);
  12. //过期的key
  13. String key = new String(message.getBody(),StandardCharsets.UTF_8);
  14. logger.info("redis key 过期:pattern={},channel={},key={}",new String(pattern),channel,key);
  15.  
  16. }
  17. }  

 

springboot使用redis的keyspace notifications 实现定时通知的更多相关文章

  1. 【redis】spring boot利用redis的Keyspace Notifications实现消息通知

    前言 需求:当redis中的某个key失效的时候,把失效时的value写入数据库. github: https://github.com/vergilyn/RedisSamples 1.修改redis ...

  2. 利用Redis keyspace notification(键空间通知)实现过期提醒

    一.序言: 本文所说的定时任务或者说计划任务并不是很多人想象中的那样,比如说每天凌晨三点自动运行起来跑一个脚本.这种都已经烂大街了,随便一个 Crontab 就能搞定了. 这里所说的定时任务可以说是计 ...

  3. Redis的keyspace notification(键空间通知)

    文章来源https://www.cnblogs.com/tinywan/p/5903988.html 一.需求分析: 设置了生存时间的Key,在过期时能不能有所提示? 如果能对过期Key有个监听,如何 ...

  4. 10Redis键空间通知(keyspace notifications)

    Redis的键空间通知(keyspace notifications)功能是自2.8.0版本开始加入的,客户端可以通过订阅/发布(Pub/Sub)机制,接收那些以某种方式改变了Redis数据空间的事件 ...

  5. 【springBoot】springBoot集成redis的key,value序列化的相关问题

    使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...

  6. SpringBoot整合Redis、ApachSolr和SpringSession

    SpringBoot整合Redis.ApachSolr和SpringSession 一.简介 SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐.它提供了各种starter简化很多 ...

  7. SpringBoot集成redis的key,value序列化的相关问题

    使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...

  8. springboot集成redis(mybatis、分布式session)

    安装Redis请参考:<CentOS快速安装Redis> 一.springboot集成redis并实现DB与缓存同步 1.添加redis及数据库相关依赖(pom.xml) <depe ...

  9. Windows环境下springboot集成redis的安装与使用

    一,redis安装 首先我们需要下载Windows版本的redis压缩包地址如下: https://github.com/MicrosoftArchive/redis/releases 连接打开后如下 ...

随机推荐

  1. Nginx四层代理

    Nginx支持四层代理 http://nginx.org/en/docs/stream/ngx_stream_core_module.html 该ngx_stream_core_module模块自1. ...

  2. Docker虚拟化管理:30分钟教你学会用Docker

    关于Docker的官方介绍网上太多了我就不贴了,就实际体验来说Docker可以极大的简化环境搭建及服务部署的操作流程,大大降低部署的时间成本,解放你的双手. 本文不会深入讲解Docker底层架构及运行 ...

  3. Google Play商店为预注册的游戏和应用提供自动安装功能

    谷歌 Play 商店一直在准备一项功能,它可以自动安装用户预先注册的应用程序和游戏.似乎该功能现已开始向第一批用户推出.有些人在预注册时会看到一个新选项,使他们能够利用发布时自动安装的功能. 用户在 ...

  4. ip-端口-协议等基本概念

    互联网上的计算机,都会有一个唯一的32位的地址——ip地址.我们访问服务器,就必须通过这个ip地址.   局域网里也有预留的ip地址:192/10/172开头.局域网里的ip地址也是唯一的.   NA ...

  5. itchat学习

    itchat是一个开源的微信个人号接口,可以很方便的使用python调用微信. 教程如下:https://itchat.readthedocs.io/zh/latest/ 简单试玩了一下,觉得还挺有趣 ...

  6. web前端项目中遇到的一些问题总结(08.23更新)

    个人网站 https://iiter.cn 程序员导航站 开业啦,欢迎各位观众姥爷赏脸参观,如有意见或建议希望能够不吝赐教! 写一些最近工作中Vue项目中遇到的问题. 巴啦啦小魔仙,污卡拉,全身变,小 ...

  7. codeforce 1311 D. Three Integers

    In one move, you can add +1 or −1 to any of these integers (i.e. increase or decrease any number by ...

  8. varnish 项目实战

    1.工作原理 在当前主流的Web服务架构体系中,Cache担任着越来越重要的作用.常见的基于浏览器的C/S架构,Web Cache更是节约服务器资源的关键.而最近几年由FreeBSD创始人之一Kamp ...

  9. MySQL 入门(2):索引

    摘要 在这篇文章中,我会先介绍一下什么是索引,索引有什么作用. 之后会介绍一下索引的数据结构是什么样的,有什么优点,又会带来什么样的问题. 在分析完数据结构后,我们可以根据这个数据结构,研究索引的用法 ...

  10. Python库的安装与查看

    安装库:    Step1:  win+r键打开此页面,并输入cmd     Step2 :键入cmd并点击确定    Step3 :键入语句:“ pip install 库名 “ 回车即可 这样库就 ...