redis保存不了对象的map

发布于 2021-11-29 17:57:51 字数 1988 浏览 744 评论 11

有个自己写的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

沦落红尘 2021-12-01 20:11:58

引用来自“亭舸翁”的评论

看你
TSessionManager.save是怎么写的

墨洒年华 2021-12-01 20:11:58

引用来自“亭舸翁”的评论

看你
TSessionManager.save是怎么写的

倚栏听风 2021-12-01 20:11:56

引用来自“亭舸翁”的评论

看你
TSessionManager.save是怎么写的

空城仅有旧梦在 2021-12-01 20:11:56

引用来自“Pig-man”的评论

你是把masterOrSub这个对象放进去了?

琴流音 2021-12-01 20:11:55

看你
TSessionManager.save是怎么写的

风透绣罗衣 2021-12-01 20:11:52

attributes是Tsession中的一个Map类型的实例变量

爱你是孤单的心事 2021-12-01 20:11:45

这个是有问题的,你尝试把这个对象转换成JSON数组作为redis的value放进去再试一下

高跟鞋的旋律 2021-12-01 20:08:55

引用来自“Pig-man”的评论

你是把masterOrSub这个对象放进去了?

别低头,皇冠会掉 2021-12-01 19:55:05

你是把masterOrSub这个对象放进去了?

卸妝后依然美 2021-12-01 01:58:21

顶一下下

只为守护你 2021-11-30 15:22:15

引用来自“亭舸翁”的评论

看你
TSessionManager.save是怎么写的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文