protected Serializable doCreate(Session session) 這個(gè)方法中的sessionId是做什么的?
protected?Serializable?doCreate(Session?session)?{ ??????Serializable?sessionId?=?generateSessionId(session);??? ??????byte[]?key?=?getKey(session.getId().toString());?? ??????byte[]?value?=?SerializationUtils.serialize(session);?? ??????jedisUtil.set(key,value);??jedisUtil.expire(key,600);?? ??????return?sessionId; }
但是在存入Redis用的確是session.getId()
private?void?saveSession(Session?session){ ????if?(session!=null&&session.getId()!=null){ ????????byte[]?key?=?getKey(session.getId().toString());//添加前綴 ????????byte[]?value?=?SerializationUtils.serialize(session);?//將session序列化,以便存入redis ????????jedisUtil.set(key,value); ????????jedisUtil.expire(key,600); ????} }
我不明白下面這個(gè)操作是做什么用的:
Serializable?sessionId?=?generateSessionId(session);
然后在獲取的時(shí)候用的是這個(gè) Serializable sessionId
protected?Session?doReadSession(Serializable?sessionId)?{ ????System.out.println("read?session"); ????if?(sessionId==null){ ????????return?null; ????} ????byte[]?key?=?getKey(sessionId.toString());//添加key的前綴 ????byte[]?value?=?jedisUtil.get(key); ????return?(Session)SerializationUtils.deserialize(value);?//反序列化 }
存入的時(shí)候是使用的是直接從session.getId()沒有序列化的,讀取的時(shí)候是序列化的
2019-04-16
在以后你需要從redis中拿去session時(shí)是要使用的
2018-07-22
發(fā)現(xiàn)答案在第二部分的1分40秒,這里忘了把id和session做關(guān)聯(lián)