Redis缓存session的一些问题

J2EE 码拜 4年前 (2016-01-29) 316次浏览
最近接触这块,百度搜的资料不是很多,而且大部分都是一个介绍,谷歌上不去。现在有如下问题,希望有经验的前辈予以解答。
1、在不使用Redis缓存session的时候,本人在action里取session都是这样:

HttpSession session = request.getSession();

本人通过查阅资料得知,其原理大致就是在cookie里存放了一个sessionId,本人的getSession的时候,通过这个sessionId取到对应的session。那么,本人在使用Redis的时候,key是sessionId,value是session对象。这样对么?
2、Redis缓存session,本人应该在哪一步将session对象放到Redis里呢?其实说到底,本人就是对session对象是什么时候产生的有些搞不清楚。例如本人有一个网站,www.test.com。这个网站有登录功能,那么,session是在本人打开www.test.com的时候就产生了,还是本人点击“登录”的时候才产生的呢?
3、其实和2是一个问题。
本人现在的想法如下:写一个filter,在filter里拦截全部请求,新建session和sessionId,并且把他们存到Redis里,把sessionId写到cookie里。之后在用到session的时候,直接在Redis里取session对象拿来用。本人的这个想法对么?假如对,可否有前辈贴上示例代码看看。假如不对,请指正。
4、不同的容器能否实现不同?例如本人在百度上看到,“Tomcat下用redis缓存session”,“weblogic下redis缓存session”。这些不同的容器缓存session的实现不一样么?假如不一样,那么能否代表本人3中的想法是错的啊。
以上就是本人的问题,望有经验的前辈予以指导。

解决方案:30分
思路是对的哦
这样的话 用Redis,不一定用到Session,你可以用用户名作为key,存放在redis中,并且给一个过期日期
解决方案:10分
Session的存放位置好像是可以设置的,至于能不能设置成redis就不知道了,但是你本人用Redis存感觉不靠谱
解决方案:50分
不同容器的话写法估计不一样。你也可以看看 spring-session可以匹配任何的web容器,
这里git 上面有一个你也可以参考
tomcat-redis-session-manager
解决方案:10分
确实,你的问题跟Redis本身是无关的,
Redis确实可以解决你说的Session共享的问题,
1、在使用Redis的时候,key是sessionId,value是session对象。这样理解是对的
2、你在第一次打开网站时就创建了一个SessionID,只要没有关闭浏览器,你的一系列动作,包括弹窗,包括链接跳转,都是同一个SessionID,一般这个SessionID都是通过Cookie来传输,在跳转弹窗等操作中间都是同样的Cookie值
3、你的filter本人没太理解,但是你通过SessionID把登录信息写到Redis,再通过SessionID读取登录信息,是可以解决你的问题的
4、不同的窗口实现是没有区别的,那些人只是刚好用到Tomcat而已

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Redis缓存session的一些问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)