当前位置:   article > 正文

Redis Key过期监听配置

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的配置文件

  1. @Configuration
  2. public class RedisConfig2 {
  3. @Bean
  4. RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
  5. MessageListenerAdapter listenerAdapter) {
  6. RedisMessageListenerContainer container = new RedisMessageListenerContainer();
  7. container.setConnectionFactory(connectionFactory);
  8. // 订阅键过期事件
  9. container.addMessageListener(listenerAdapter, new ChannelTopic("__keyevent@0__:expired"));
  10. return container;
  11. }
  12. @Bean
  13. MessageListenerAdapter listenerAdapter(RedisKeyExpiredListener listener) {
  14. return new MessageListenerAdapter(listener);
  15. }
  16. }

  1. @Component
  2. public class RedisKeyExpiredListener implements MessageListener {
  3. @Autowired
  4. private ITReportTimesService tReportTimesService;
  5. @Override
  6. public void onMessage(Message message, byte[] pattern) {
  7. String expiredKey = message.toString();
  8. if (expiredKey.startsWith("sleep:decibels:")) {//只处理该key过期删除时间
  9. Long userId = Long.valueOf(expiredKey.split(":")[2]);
  10. // 处理非正常关机导致的睡眠结束逻辑
  11. handleUnexpectedShutdown(userId);
  12. }
  13. }
  14. private void handleUnexpectedShutdown(Long userId) {
  15. // 处理睡眠监测结束逻辑,例如记录结束时间
  16. System.out.println("监测到了@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
  17. //要处理的逻辑.......
  18. }
  19. }

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/693501
推荐阅读
相关标签
  

闽ICP备14008679号