默认情况下在Windows系统中双击redis-server.exe用的是内置的配置文件
如果希望用这两个配置文件
- redis.windows.conf:这是用于在Windows上运行Redis服务器的标准配置文件。可以使用这个文件通过命令行启动Redis服务器。
- redis.windows-service.conf:这是专门为在Windows服务中运行Redis设计的配置文件。可以使用这个文件将Redis作为Windows服务来运行。
Window安装Redis为服务并设置开机自启
在redis安装目录下管理员运行cmd
1 | redis-server --service- install redis.windows.conf --service-name redis |
1 | net start redis // 开机自启 |
修改redis的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @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); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | @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( "监测到了@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" ); //要处理的逻辑....... } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @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(); } |
到此这篇关于Redis Key过期监听的配置详解的文章就介绍到这了,更多相关Redis Key过期监听内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!