redis保存不了对象的map
有个自己写的session类,类中有个map的实例变量,如下所示
public class TSession extends TCache { private String sid; private int userid; private long loginTime; private String userAgent; public TSession() { } } public abstract class TCache { private String key; private int expireSecond = 1800; private Map<String, TCache.Entry> attributes = new HashMap(); public TCache() { } public TCache setAttribute(String k, Object v) { if(k != null && v != null) { String value = JSON.toJSONString(v); String className = v.getClass().getName(); TCache.Entry e = new TCache.Entry(k, value, className, System.currentTimeMillis()); this.attributes.put(k, e); return this; } else { throw new NullPointerException("k=" + k + "or v=" + v + " is null."); } } public <T> T getAttribute(String key) { TCache.Entry e = (TCache.Entry)this.attributes.get(key); Object t = null; if(e != null) { String value = e.value; String className = e.valueClassName; Class klass = CommonUtils.classForName(className); t = JSON.parseObject(value, klass); } return t; } }
把session保存到redis中,不见attributes。
TSession ts = TSessionManager.newTSession(userid, userAgent); ts.setAttribute("masterOrSub", masterOrSub); int status = ts.getAttribute("masterOrSub"); System.out.println("保存之前------"+status); TSessionManager.save(ts); TSession t = TSessionManager.get(userid); int status2 = t.getAttribute("masterOrSub"); System.out.println("保存之后------"+status2);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
引用来自“亭舸翁”的评论
看你
TSessionManager.save是怎么写的
引用来自“亭舸翁”的评论
看你
TSessionManager.save是怎么写的
引用来自“亭舸翁”的评论
看你
TSessionManager.save是怎么写的
引用来自“Pig-man”的评论
你是把masterOrSub这个对象放进去了?
看你
TSessionManager.save是怎么写的
attributes是Tsession中的一个Map类型的实例变量
这个是有问题的,你尝试把这个对象转换成JSON数组作为redis的value放进去再试一下
引用来自“Pig-man”的评论
你是把masterOrSub这个对象放进去了?
你是把masterOrSub这个对象放进去了?
顶一下下
引用来自“亭舸翁”的评论
看你
TSessionManager.save是怎么写的