Redis之缓存续期

本文共 671 字,预计阅读时间 2 分钟

开发中会遇到这样的需求,用户登录系统后,若超过30分钟无操作,则强制用户退出。也就是说登录后,若30分钟内进行了操作则无需退出用户,若超过30分钟不进行操作,则强制把用户退出,这里主要说明涉及缓存方面的问题,至于如何通知前端退出用户在此略。但有没有想过如下问题?如果直接设置登录后token的过期时间是30分钟,那么当用户一直操作时会出现突然下线的情况,使用体验很差。

一种好的解决方案是,在此基础上,通过判断用户是否操作设置token的有效期,也就是说当用户一直在操作时,不断的延长token的过期时间,直到30分钟后无操作,则token自动失效。

这里以string类型进行简单说明,关键是续期的方法:

复制代码
    //续期
    public void renewalVal(String key, long times, TimeUnit timeUnit) {
        if (keyIsExists(key)) {
            String userInfo = getValue(key);
            setValue(key, userInfo, times, timeUnit);
        }
    }
复制代码

是需要续期的地方调用即可

至于如何判断是否有操作,可根据时间情情况进行选择,比如使用拦截器,每次需要认证的请求都调用一次续期的方法。

原理很简单,就是每次接到请求后,就调用方法进行token续期,而没有操作时,不会请求后端,则不会进行任何处理,时间一到redis就自动过期。

posted @   钟小嘿  阅读(2167)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2020-10-18 Lambad表达式与函数式接口
点击右上角即可分享
微信分享提示