• spring+redis+nginx 实现分布式session共享


    1,spring 必须是4.3以上版本的

    2,maven配置

      添加两个重要的依赖

      

    <dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>1.2.2.RELEASE</version>
    <type>pom</type>
    </dependency>

    <dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
    </dependency>

    3,spring.xml 文件配置
    <!--分布式session-->
    <bean id="redisHttpSessionConfiguration"
    class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
    <property name="maxInactiveIntervalInSeconds" value="600"/>
    </bean>

    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <property name="maxTotal" value="${jedis.pool.maxTotal}" />
    <property name="maxIdle" value="${jedis.pool.maxIdle}" />
    </bean>

    <bean id="jedisConnectionFactory"
    class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">
    <property name="hostName" value="${redis.ip}"/>
    <property name="port" value="${redis.port}"/>
    <property name="password" value="${redis.password}" />
    <property name="timeout" value="3000"/>
    <property name="usePool" value="true"/>
    <property name="poolConfig" ref="jedisPoolConfig"/>
    </bean>

    4,redis配置
    #redis配置
    #*****************jedisu8FDEu63A5u53C2u6570u8BBEu7F6E*********************#
    #redisu670Du52A1u5668ip #
    #redis.ip=47.92.128.123
    redis.ip=192.168.9.168
    #redisu670Du52A1u5668u7AEFu53E3u53F7#
    redis.port=6379
    redis.password=123456
    #************************jedisu6C60u53C2u6570u8BBEu7F6E*******************#
    #jedisu7684u6700u5927u5206u914Du5BF9u8C61#
    jedis.pool.maxActive=3000
    #jedisu6700u5927u4FDDu5B58idelu72B6u6001u5BF9u8C61u6570 #
    jedis.pool.maxIdle=1000
    #jedisu6C60u6CA1u6709u5BF9u8C61u8FD4u56DEu65F6uFF0Cu6700u5927u7B49u5F85u65F6u95F4 #
    jedis.pool.maxTotal=1500
    #jedisu8C03u7528borrowObjectu65B9u6CD5u65F6uFF0Cu662Fu5426u8FDBu884Cu6709u6548u68C0u67E5#
    jedis.pool.testOnBorrow=true
    #jedisu8C03u7528returnObjectu65B9u6CD5u65F6uFF0Cu662Fu5426u8FDBu884Cu6709u6548u68C0u67E5 #
    jedis.pool.testOnReturn=true

    5,web.xml 配置
    <!--spring  redis  共享session 拦截器-->
    <filter>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    经过以上配置,就可以使用了
    要想实现session共享还需要访问的时候域名一致,如果域名不一致是不能够共享的
    例如 :
    负载均衡两台服务器
    A: 192.168.1.101 : 8080
    B: 192.168.1.102 : 8081
    在浏览器中分别用IP地址去访问两台服务器下的服务是不会实现session共享的
    只有通过nginx做负载均衡两台服务器绑定同一域名如 www.test.com
    通过域名去访问这时不管请求分发到哪一台机器都可以实现session的共享



  • 相关阅读:
    react中的生命周期钩子
    vue小知识
    vue发布中的前后端分离和前后端不分离
    vue中的vuex
    vue项目的发布
    stylus解决移动端1像素
    一行代码实现数组去重(ES6)
    详解js中Number()、parseInt()和parseFloat()的区别_javascript技巧
    关于element-ui 的日期时间选择器的超出时间无法选择的设置
    git使用
  • 原文地址:https://www.cnblogs.com/siashan/p/7575704.html
Copyright © 2020-2023  润新知