默认情况下在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();}