Tomcat利用Redis存储Session

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

截止到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分钟。

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

特别说明:尊重作者的劳动成果,转载请注明出处哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt269

时间: 2024-08-01 14:30:54

Tomcat利用Redis存储Session的相关文章

Tomcat 使用Redis存储Session的详解

Tomcat Redis Session Github 地址. 下载 commons-pool2-2.2.jar,jedis-2.5.2.jar,tomcat-redis-session-manager-2.0.0.jar 这三个包,将其放到 tomcat 目录下的lib目录下. 修改tomcat 的conf目录下的 context.xml 文件. 在Context中插入下面的代码.  代码如下 复制代码 <Valve className="com.orangefunction.tomca

php中利用redis存储session实例详解

phpinfo,可以看到session存储,可以使用files user memcache redis,使用数据库存储session的好处是较之文件存储,在大用户量下速度更快,性能更优,而且如果做分布式系统,肯定是需要使用数据库存储session的.这里总结下使用redis存储session的两种方式 使用mysql存储session大家应该使用过,session生命周期的原理其实就是session.gcprobability,session.gcdivisor这两个参数和最大生命时间决定的.每

tomcat7用redis存储session报错

问题描述 tomcat7用redis存储session报错 com.orangefunction.tomcat.redissessions.RedisSessionManager sessionFromSerializedData SEVERE: Unable to deserialize into session java.lang.ClassNotFoundException: 解决方案 PS:截止到2015-05-12前是不支持Tomcat8的,详情见官网:https://github.c

php Redis存储Session的例子详解

安装redis服务以及php redis扩展 一:redis安装 Download, extract and compile Redis with: $ wget http://download.redis.io/releases/redis-3.0.4.tar.gz $ tar xzf redis-3.0.4.tar.gz $ cd redis-3.0.4 $ make The binaries that are now compiled are available in the src di

Asp.net Core 使用Redis存储Session

前言 Asp.net Core 改变了之前的封闭,现在开源且开放,下面我们来用Redis存储Session来做一个简单的测试,或者叫做中间件(middleware). 对于Session来说褒贬不一,很多人直接说不要用,也有很多人在用,这个也没有绝对的这义,个人认为只要不影什么且又可以方便实现的东西是可以用的,现在不对可不可用做表态,我们只关心实现. 类库引用 这个相对于之前的.net是方便了不少,需要在project.json中的dependencies节点中添加如下内容: "StackExc

详解PHP使用Redis存储session时的一个Warning定位

1. 问题现象 系统页面刷新的时候,偶尔会报错下面的Warnning,但是不经常出现: Warning: Unknown: Failed to write session data (Redis). Please verify that the current setting of session.save_path is correct (tcp://x.x.x.x:6379?auth=yyy) in Unknown on line 0 看网络有人说是redis版本的问题.但是没有具体结论,那

tomcat利用memcache解决session共享

1.说明 主要是利用memcached-session-manager开源tomcat插件改变tomcat原始的session存储机制,将session的存储放到分布式缓存memcache中,从而实现对session的共享 2.安装包下载 memcache-session-manager在tomcat6上所需jar包 这是将msm官方的jar打了一个zip包方便下载使用 memcache-session-manager官方下载地址 memcache下载见memcache安装 3.环境描述 系统:

关于 tomcat 集群中 session 共享的三种方法

前两种均需要使用 memcached 或 redis 存储 session ,最后一种使用 terracotta 服务器共享.  建议使用 redis ,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单个对象比较大,而且数据类型丰富,  不只是缓存 session ,还可以做其他用途,一举几得啊.  1.使用 filter 方法存储  这种方法比较推荐,因为它的服务器使用范围比较多,不仅限于 tomcat ,而且实现的原理比较简单容易控制.  可以使用 memcached-session-f

详解Asp.net Core 使用Redis存储Session_实用技巧

前言 Asp.net Core 改变了之前的封闭,现在开源且开放,下面我们来用Redis存储Session来做一个简单的测试,或者叫做中间件(middleware). 对于Session来说褒贬不一,很多人直接说不要用,也有很多人在用,这个也没有绝对的这义,个人认为只要不影什么且又可以方便实现的东西是可以用的,现在不对可不可用做表态,我们只关心实现. 类库引用 这个相对于之前的.net是方便了不少,需要在project.json中的dependencies节点中添加如下内容: "StackExc