Redis 实现分布式 Session 治理
Memcached 管理机制
Redis 管理机制
- redis 的 session 治理是利用 spring 提供的 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 演示一波
最初
欢送关注公众号:前程有光,支付一线大厂 Java 面试题总结 + 各知识点学习思维导 + 一份 300 页 pdf 文档的 Java 外围知识点总结!