Redis实现session管理
管理机制
redis的session管理是利用spring提供的session管理解决方案,将一个应用session交给Redis存储,整个应用中所有session的请求都会去redis中获取对应的session
开发Session管理
引入依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
开发Session管理配置类
@Configuration
@EnableRedisHttpSession
public class RedisSessionManager {
}
打包测试
单点测试
application.properties
spring.application.name=redis_test
server.port=8989
#单节点
spring.redis.host=39.99.236.216
spring.redis.port=7000
spring.redis.database=0
Controller
@Controller
@RequestMapping("test")
public class TestController {
@SneakyThrows
@RequestMapping("test")
public void test(HttpServletRequest request, HttpServletResponse response){
List<String> list = (List<String>) request.getSession().getAttribute("list");
if (list == null){
list = new ArrayList<>();
}
list.add("xxx");
//使用redis的session管理 注意:当session中数据发生变化时必须将session中变化的数据同步到redis中
request.getSession().setAttribute("list",list); //同步redis中的session数据
response.getWriter().println("size" + list.size());
response.getWriter().println("sessionId" + request.getSession().getId());
}
}
集群测试
# 1 配置
<description>Demo project for Spring Boot</description>
<!--step 1-->
<packaging>war</packaging>
......
<!--step 2 排除内嵌tomcat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
# 2 修改入口类
@SpringBootApplication
@MapperScan("com.longda.dao")
public class RedisTestApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(RedisTestApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(RedisTestApplication.class);
}
}
# 3 打包放到linux上

浙公网安备 33010602011771号