我的日常

登录/注册
您现在的位置:论坛 资料库 开源社区 > Tomcat整合Redis实现存储Session
总共48086条微博

动态微博

查看: 2098|回复: 0

Tomcat整合Redis实现存储Session

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2016-02-15 18:04:30 |只看该作者 |倒序浏览
    如果英文不错的看,建议直接看官网吧,官网写的挺清楚。下面的内容是转载的一篇文章,自己补充了一些,供大家参考,也欢迎大家一起讨论

    截止到2015-05-12前是不支持Tomcat8的,详情见官网:https://github.com/jcoleman/tomcat-redis-session-manager

    前提:你已经部署了Redis,尚未学会的,可以移步这里:http://www.52itstyle.top/thread-20084-1-1.html

    其实很简单,就几个步骤:
    1.配置Tomcat的conf目录下的context.xml文件:

    1> 单点Reids配置
    1. <!-- Jedis save session -->
    2. <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />        
    3. <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
    4.     host="localhost"
    5.     port="6379"
    6.     database="0"
    7.     maxInactiveInterval="60"/>
    复制代码
    2> Sentinel集群配置:
    1. <!-- Sentinel 配置 -->

    2. <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />        

    3. <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

    4.     maxInactiveInterval="60"

    5.     sentinelMaster="mymaster"

    6.     sentinels="127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381,127.0.0.1:26382" />
    复制代码
    2.添加jar


    3.测试


    1>

    存储Session:
    1. protected void doPost(HttpServletRequest request, HttpServletResponse response)
    2.     throws ServletException, IOException {
    3.         System.out.println("hello");           //取得Session对象
    4.         HttpSession session=request.getSession();
    5.         //设置Session属性
    6.         for(int i=0;i<100000;i++){
    7.             session.setAttribute("name"+i, "Magci_"+i);
    8.         }
    9.     }
    复制代码

    2>重启Tomcat:假如Session保存在tomcat下,重启后Session不存在;如果保存在Redis下,Tomcat重启对Session无影响



    3>取出Session:
    1. protected void doPost(HttpServletRequest request, HttpServletResponse response)
    2.      throws ServletException, IOException {
    3.         System.out.println("hello");           //取得Session对象
    4.         HttpSession session=request.getSession();
    5.         //取出Session属性
    6.         for(int i=0;i<100000;i++){
    7.             System.out.println(session.getAttribute("name"+i));
    8.         }
    9.     }
    复制代码
    注意事项:从Tomcat6开始默认开启了Session持久化设置,测试时可以关闭本地Session持久化,其实也很简单,在Tomcat的conf目录下的context.xml文件中,取消注释下面那段配置即可:
    1. <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    2.     <!--
    3.     <Manager pathname="" />
    4.     -->
    复制代码

    可以尝试运行上面的demo案例!


    需要注意的是:


    web.xml中的配置是有效的,即使是context.xml总配置maxInactiveInterval默认60秒,只要web.xml中的sessionConfig配置30分钟,则session的失效时间还是30分钟。


    转自:http://blog.csdn.net/caiwenfeng_for_23/article/details/45666831



    特别说明:尊重作者的劳动成果,转载请注明出处哦~~~


    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表