情景:利用Redis存入session以便用时之取,确发现无论怎样在Redis中都拿不到数据,程序运行没有报错,各种debug也没发现毛病,一个小时没有丝毫头绪,最后无疑的查了下缓存到期时间,意外的发现到期时间只有1.8秒。然后在session储存类里发现自己写了一段气到吐血的代码:

private void saveSession(Session session) throws UnknownSessionException{
     if (session == null || session.getId() == null) {
         logger.error("session or session id is null");
         return;
     }
 //设置缓存过期时间
     long expireTime = 1800l;
     session.setTimeout(expireTime);
     redisManager.setEx(KEY_PREFIX + session.getId(), session, expireTime);
 }

注意 ! long expireTime = 1800l;

这里粗心大意误以为单位是秒,实际上是毫秒!意味着数据在1.8秒就会过期!

毕竟手没有那么快,所以怎么也拿不到数据。

改成


long expireTime = 1800000l;

搞定。

2 个评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注