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就自动过期。
就是这么简单,你学废了吗?感觉有用的话,给笔者点个赞吧 !
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2020-10-18 Lambad表达式与函数式接口