当前位置: 首页 > news >正文

Redis Key过期监听配置

默认情况下在Windows系统中双击redis-server.exe用的是内置的配置文件

如果希望用这两个配置文件

  • redis.windows.conf:这是用于在Windows上运行Redis服务器的标准配置文件。可以使用这个文件通过命令行启动Redis服务器。
  • redis.windows-service.conf:这是专门为在Windows服务中运行Redis设计的配置文件。可以使用这个文件将Redis作为Windows服务来运行。

Window安装Redis为服务并设置开机自启   

在redis安装目录下管理员运行cmd  

redis-server --service-install redis.windows.conf --service-name redis 

net start redis //开机自启

修改redis的配置文件

@Configuration
public class RedisConfig2 {@BeanRedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,MessageListenerAdapter listenerAdapter) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(connectionFactory);// 订阅键过期事件container.addMessageListener(listenerAdapter, new ChannelTopic("__keyevent@0__:expired"));return container;}@BeanMessageListenerAdapter listenerAdapter(RedisKeyExpiredListener listener) {return new MessageListenerAdapter(listener);}
}

@Component
public class RedisKeyExpiredListener implements MessageListener {@Autowiredprivate ITReportTimesService tReportTimesService;@Overridepublic void onMessage(Message message, byte[] pattern) {String expiredKey = message.toString();if (expiredKey.startsWith("sleep:decibels:")) {//只处理该key过期删除时间Long userId = Long.valueOf(expiredKey.split(":")[2]);// 处理非正常关机导致的睡眠结束逻辑handleUnexpectedShutdown(userId);}}private void handleUnexpectedShutdown(Long userId) {// 处理睡眠监测结束逻辑,例如记录结束时间System.out.println("监测到了@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");//要处理的逻辑.......}
}

 @Autowiredprivate RedisTemplate  redisTemplate;@GetMapping("/sleepTimes")//监测时候每多少分钟调用一次public AjaxResult sleepTimes(){LoginUser loginUser = getLoginUser();Long userId = loginUser.getUserId();// 往redis中记录,延时30秒,通过Redis key过期监听判断用户是否非正常关机String redisKey = "sleep:decibels:" + userId;//第一次会创建key和value  第二次调用会更新(覆盖相同key)key和valueredisTemplate.opsForValue().set(redisKey, "I am active", 60, TimeUnit.SECONDS);System.out.println("sleepTimes");return success();}

相关文章:

  • nginx优化与防盗链【☆☆☆】
  • fastapi学习前置知识点
  • 前端工程化工具系列(十一)—— Babel(v7.24):JavaScript编译器
  • 多线程详解
  • Redis到底支不支持事务?
  • MySQL 存储函数及调用
  • C语言 | Leetcode C语言题解之第142题环形链表II
  • Position定位
  • 深度学习之文本分类模型-基于transformer
  • Spring Web MVC入门
  • AI服务器相关知识
  • 有趣的数学 为什么绝对值和模都用两个竖线表示?
  • Python with语句
  • 大数据运维学习笔记之flink standalone flink on yarn集群搭建 —— 筑梦之路
  • AI作画工具介绍
  • [case10]使用RSQL实现端到端的动态查询
  • android 一些 utils
  • CSS实用技巧
  • Docker: 容器互访的三种方式
  • Docker入门(二) - Dockerfile
  • golang中接口赋值与方法集
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • js继承的实现方法
  • js中的正则表达式入门
  • magento 货币换算
  • redis学习笔记(三):列表、集合、有序集合
  • Spark RDD学习: aggregate函数
  • SQLServer插入数据
  • Transformer-XL: Unleashing the Potential of Attention Models
  • ⭐ Unity + OpenCV 实现实时图像识别与叠加效果
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 经典排序算法及其 Java 实现
  • 蓝海存储开关机注意事项总结
  • 码农张的Bug人生 - 见面之礼
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 排序算法学习笔记
  • 深度学习入门:10门免费线上课程推荐
  • 硬币翻转问题,区间操作
  • Hibernate主键生成策略及选择
  • 选择阿里云数据库HBase版十大理由
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # Maven错误Error executing Maven
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #VERDI# 关于如何查看FSM状态机的方法
  • $.ajax,axios,fetch三种ajax请求的区别
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (19)夹钳(用于送货)
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (4)事件处理——(7)简单事件(Simple events)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)php新闻发布平台 毕业设计 141646