当前位置: 代码网 > it编程>数据库>Redis > Redis Key过期监听的配置详解

Redis Key过期监听的配置详解

2024年07月03日 Redis 我要评论
默认情况下在windows系统中双击redis-server.exe用的是内置的配置文件如果希望用这两个配置文件redis.windows.conf:这是用于在windows上运行redis服务器的标

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

到此这篇关于redis key过期监听的配置详解的文章就介绍到这了,更多相关redis key过期监听内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com