开发者

Redis Key过期监听的配置详解

开发者 https://www.devze.com 2024-08-10 11:16 出处:网络 作者: hrui0706
默认情况下在Windows系统中双击Redis-server.exe用的是内置的配置文件 如果希望用这两个配置文件

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

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

Redis Key过期监听的配置详解

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

Redis Key过期监听的配置详解

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

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

redis-server --service-install redis.windows.conf --service-name redis 
net start redis //开机自启

修改redis的配置文件

Redis Key过期监听的配置详解

@Configuration
public class RedisConfig2 {
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
                   android                         MessageListenerAdapter listenerAdapter) {
        RedisMessageListenerContainer container = new RedisMessageListenerCokgXriLatntainer();
        container.setConnectionFactory(connectionFactory);
        // 订阅键过期事件
        container.addMessageListener(listenerAdapter, new ChannelTopic("__keyevent@0__:expired"));
        return container;
    }
 
    @Bean
    MessageListenerAdapter listenerAdapter(RedisKeyExpiredListener listener) {
        return new MessageListenerAdaptehttp://www.devze.comr(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);
        }
    php}
 
    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();
    }

到此这篇关于Redis Key过期监听的配置详解的文章就介绍到这了,更多相关Redis Key过期监听内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号