zoukankan      html  css  js  c++  java
  • Tomcat利用Redis存储Session

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt269

    如果英文不错的看,建议直接看官网吧,官网写的挺清楚。下面的内容是转载的一篇文章,自己补充了一些,供大家参考,也欢迎大家一起讨论

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

    前提:你已经部署了Redis,尚未学会的,可以移步这里:http://blog.csdn.net/caiwenfeng_for_23/article/details/45511007

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

    1> 单点Reids配置

    1
    2
    3
    4
    5
    6
    7
    <!-- Jedis save session -->
    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />        
    <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" 
        host="localhost" 
        port="6379" 
        database="0" 
        maxInactiveInterval="60"/>

    2> Sentinel集群配置:

    <!-- Sentinel 配置 -->

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

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

        maxInactiveInterval="60"

        sentinelMaster="mymaster"

        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
    2
    3
    4
    5
    6
    7
    8
    9
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
            System.out.println("hello");           //取得Session对象
            HttpSession session=request.getSession(); 
            //设置Session属性
            for(int i=0;i<100000;i++){
                session.setAttribute("name"+i, "Magci_"+i); 
            }
        }

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

    3>取出Session:

    1
    2
    3
    4
    5
    6
    7
    8
    9
     protected void doPost(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
            System.out.println("hello");           //取得Session对象
            HttpSession session=request.getSession(); 
            //取出Session属性
            for(int i=0;i<100000;i++){
                System.out.println(session.getAttribute("name"+i));
            }
        }

    注意事项:从Tomcat6开始默认开启了Session持久化设置,测试时可以关闭本地Session持久化,其实也很简单,在Tomcat的conf目录下的context.xml文件中,取消注释下面那段配置即可:

    1
    2
    3
    4
     <!-- Uncomment this to disable session persistence across Tomcat restarts -->
        <!--
        <Manager pathname="" />
        -->

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

    需要注意的是:

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

  • 相关阅读:
    oracle 数据库服务名怎么查
    vmware vsphere 6.5
    vSphere虚拟化之ESXi的安装及部署
    ArcMap中无法添加ArcGIS Online底图的诊断方法
    ArcGIS中字段计算器(高级计算VBScript、Python)
    Bad habits : Putting NOLOCK everywhere
    Understanding the Impact of NOLOCK and WITH NOLOCK Table Hints in SQL Server
    with(nolock) or (nolock)
    What is “with (nolock)” in SQL Server?
    Changing SQL Server Collation After Installation
  • 原文地址:https://www.cnblogs.com/grefr/p/6089130.html
Copyright © 2011-2022 走看看