Session共享(二)nginx+tomcat+redis session 共享

1、安装tomcat
2、安装redis
3、安装nginx
上面这三都安装好后:
4、tomcat session共享配置步骤
添加redis session集群依赖的jar包到 TOMCAT_BASE/lib 目录下

    * tomcat-redis-session-manager-2.0.0.jar
    * jedis-2.5.2.jar
    * commons-pool2-2.2.jar

修改 TOMCAT_BASE/conf 目录下的 context.xml 文件
<Context> 标签下添加 如下内容
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
    host="ip"
    port="6379"
    database="0"
    password="1"
 maxInactiveInterval="300"/>

重要提示:java.lang.ClassNotFoundException
      
Valve className或者Manager className可能会在启动的时候报这个异常,应该是版本不同导致的。
这个时候,打开tomcat-redis-session-manager jar包,
找到RedisSessionHandlerValve类或者RedisSessionManager类所在的具体目录,这个是真实的。替换掉就可以了。

属性解释:

    1. host redis服务器地址
    2. port redis服务器的端口号
    3. database 要使用的redis数据库索引
    4. maxInactiveInterval session最大空闲超时时间,如果不填则使用tomcat的超时时长,一般tomcat默认为1800 即半个小时
    5. sessionPersistPolicies session保存策略,除了默认的策略还可以选择的策略有:
[SAVE_ON_CHANGE]:每次 session.setAttribute() 、 session.removeAttribute() 触发都会保存.
    注意:此功能无法检测已经存在redis的特定属性的变化,
    权衡:这种策略会略微降低会话的性能,任何改变都会保存到redis中.

[ALWAYS_SAVE_AFTER_REQUEST]: 每一个request请求后都强制保存,无论是否检测到变化.
    注意:对于更改一个已经存储在redis中的会话属性,该选项特别有用.
    权衡:如果不是所有的request请求都要求改变会话属性的话不推荐使用,因为会增加并发竞争的情况。

        * 1234567

    6. sentinelMaster redis集群主节点名称(Redis集群是以分片(Sharding)加主从的方式搭建,满足可扩展性的要求)
    7. connectionPoolMaxTotal
    8. connectionPoolMaxIdle jedis最大能够保持idel状态的连接数
    9. connectionPoolMinIdle 与connectionPoolMaxIdle相反
    10. maxWaitMillis jedis池没有对象返回时,最大等待时间
    11. minEvictableIdleTimeMillis
    12. softMinEvictableIdleTimeMillis
    13. numTestsPerEvictionRun
    14. testOnCreate
    15. testOnBorrow jedis调用borrowObject方法时,是否进行有效检查
    16. testOnReturn jedis调用returnObject方法时,是否进行有效检查
    17. testWhileIdle
    18. timeBetweenEvictionRunsMillis
    19. evictionPolicyClassName
    20. blockWhenExhausted
    21. jmxEnabled
    22. jmxNameBase
    23. jmxNamePrefix * **
    24. password redis 的密码
5、其他配置 session过期时间
<session-config>
         <session-timeout>5</session-timeout>
</session-config>
6、理解。
session是一个会话key由客户端第一次访问tomcat容器而产生。首先服务端调用 HttpServletRequest下的getSession(true)生成session(true是参数)。由 tomcat的 ManagerBase类提供创建sessionid的方法:生成sessionId的方法随机数+时间+jvmid。 StandardManager类将session 存储在内存中
也可以持久化到file,数据库,memcache,redis等。 客户端只保存sessionid到cookie 中,而不会保存sessionsession销毁只能通过invalidate或超时,关掉浏览器并不会关闭session。

 



猜你喜欢

转载自blog.csdn.net/liyuan0323/article/details/80152642