Redis之缓存续期

开发中会遇到这样的需求,用户登录系统后,若超过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 @ 2022-10-18 15:59  钟小嘿  阅读(1929)  评论(0编辑  收藏  举报