博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tomcat利用Redis存储Session
阅读量:7238 次
发布时间:2019-06-29

本文共 1946 字,大约阅读时间需要 6 分钟。

详见:

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

截止到2015-05-12前是不支持Tomcat8的,详情见官网:

前提:你已经部署了Redis,尚未学会的,可以移步这里:

其实很简单,就几个步骤: 

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分钟。

 

你可能感兴趣的文章
C++实现ping功能<转>
查看>>
使用matplotlib绘制收入增长模型——线性积累型与指数复利型
查看>>
【Spark】Spark-Redis连接池
查看>>
网络流简介
查看>>
How to fix “HTTP Status Code 505 – HTTP Version Not Supported” error?--转
查看>>
mybatis结合mysql批量操作及查询sql
查看>>
groovy gradle 构建配置
查看>>
Linux时间子系统(十五) clocksource
查看>>
BaseRecyclerViewAdapterHelper使用
查看>>
请说出三种减少页面加载时间的方法。
查看>>
HDU 2036 改革春风吹满地
查看>>
Deepin-快捷方式设置
查看>>
管理Java垃圾回收的五个建议
查看>>
【MySQL】MySQL的索引
查看>>
数数字
查看>>
配置阿里云Docker镜像加速仓库
查看>>
社交的基本逻辑
查看>>
DBSCAN
查看>>
Maven 使用 二——nexus
查看>>
解决maven的依赖总是无法下载完成
查看>>