赞
踩
默认情况下在Windows系统中双击redis-server.exe用的是内置的配置文件
如果希望用这两个配置文件
Window安装Redis为服务并设置开机自启
在redis安装目录下管理员运行cmd
redis-server --service-install redis.windows.conf --service-name redis
net start redis //开机自启
修改redis的配置文件
- @Configuration
- public class RedisConfig2 {
- @Bean
- RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
- MessageListenerAdapter listenerAdapter) {
- RedisMessageListenerContainer container = new RedisMessageListenerContainer();
- container.setConnectionFactory(connectionFactory);
- // 订阅键过期事件
- container.addMessageListener(listenerAdapter, new ChannelTopic("__keyevent@0__:expired"));
- return container;
- }
-
- @Bean
- MessageListenerAdapter listenerAdapter(RedisKeyExpiredListener listener) {
- return new MessageListenerAdapter(listener);
- }
- }
- @Component
- public class RedisKeyExpiredListener implements MessageListener {
-
- @Autowired
- private ITReportTimesService tReportTimesService;
-
- @Override
- public 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("监测到了@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
- //要处理的逻辑.......
- }
- }
- @Autowired
- private 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和value
- redisTemplate.opsForValue().set(redisKey, "I am active", 60, TimeUnit.SECONDS);
- System.out.println("sleepTimes");
- return success();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。