乐趣区

关于java:java开发之Redis实现分布式Session管理

Redis 实现分布式 Session 治理
Memcached 管理机制

Redis 管理机制
redis 的 session 治理是利用 spring 提 java 培训供的 session 治理解决方案, 将一个利用 session 交给 Redis 存储, 整个利用中所有 session 的申请都会去 redis 中获取对应的 session 数据。

SpringBoot 我的项目开发 Session 治理
引入依赖 pop.xml

    <!--springboot-redis-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    <!--spring-data-redis session 治理 -->
    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session-data-redis</artifactId>
    </dependency>

    <!-- 排除内嵌 tomcat-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
    </dependency>

开发 Session 治理配置类(应用注解)

@Configuration
@EnableRedisHttpSession // 将整个利用中应用 session 的数据全副交给 redis 解决
public class RedisSessionManager {

}

Controller 层设计
package com.xizi.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping(“test”)
public class TestController {

// 应用 redis 的 session 治理  留神: 当 session 中数据发生变化时必须将 session 中变动的数据同步到 redis 中
@RequestMapping("test")
public void test(HttpServletRequest request, HttpServletResponse response) throws IOException {List<String> list = (List<String>) request.getSession().getAttribute("list");
    if(list==null){list = new ArrayList<>();
    }
    list.add("xxxx");
    request.getSession().setAttribute("list",list);// 每次 session 变动都要同步 session

    response.getWriter().println("size:"+list.size());
    response.getWriter().println("sessionid:"+request.getSession().getId());
}

@RequestMapping("logout")
public void logout(HttpServletRequest request){
    // 退出登录
    request.getSession().invalidate();// 生效
}

}

打包测试

Nginx+Tomcat 集群 +Redis 测试
Nginx 相干配置


Tomcat 集群

// 这是 tom4 前面的两个端口号顺次 +1
// 敞开端口
<Server port=”8003″ shutdown=”SHUTDOWN”>

// 连贯端口
<Connector port=”8989″ protocol=”HTTP/1.1″

           connectionTimeout="20000"
           redirectPort="8443" />

<Connector port=”10010″ protocol=”AJP/1.3″ redirectPort=”8443″ />

扭转初始页面 index.jsp

3.Redis 集群
曾经开启了,不会的去看我后面的 Redis 集群搭建博客

测试
上传 war 包到三个 Tomcat 的 Webapps 目录下

间接拜访 Nginx 页面,反向代理了 Tomcat 集群



GiF 演示一波

作者:戏子 zzzz

退出移动版