SpringBoot使用Redis来实现Session共享
创建一个Maven项目名为
demo1需要添加的依赖, 使用的springboot版本是
2.1.4.RELEASE1
2
3
4
5
6
7
8
9
10
11
12<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>如果使用的是最新版本
2.1.5.RELEASE或者其以后的版本,则还需要额外添加Spring Security依赖,(其他操作不受影响,仅仅只是多了一个依赖,当然也多了 Spring Security 的一些默认认证流程)添加redis配置
1
2
3
4
5
6
7
8server:
port: 8081
spring:
redis:
host: 127.0.0.1
port: 9455
password: 123456
database: 1更加详细的配置可参看官方文档
配置完成后 ,就可以使用 Spring Session 了,其实就是使用普通的 HttpSession ,其他的 Session 同步到 Redis 等操作,SpringBoot框架已经自动帮你完成了
创建controller来设置session
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
("demo1")
public class Demo1Controller {
("set_session")
public String setSession(HttpServletRequest request) {
request.getSession().setAttribute("projectName", "demo1");
return "demo1 install session success";
}
("get_session")
public String getSession(HttpServletRequest request) {
String projectName = (String) request.getSession().getAttribute("projectName");
return "demo1 get projectName is " + projectName;
}
}参照上边的配置再创建一个项目为
demo2- 修改
server.port为8082 - 修改controller内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
("demo2")
public class Demo2Controller {
("set_session")
public String setSession(HttpServletRequest request) {
request.getSession().setAttribute("projectName", "demo2");
return "demo2 install session success";
}
("get_session")
public String getSession(HttpServletRequest request) {
String projectName = (String) request.getSession().getAttribute("projectName");
return "demo2 get projectName is " + projectName;
}
}
- 修改
分别启动
demo1和demo2两个项目,查看共享效果- 访问
demo1设置session地址 localhost:8081/demo1/set_session 将projectName设置为demo1,访问完后,数据已经自动同步到redis中 - 访问
demo1获取session地址 localhost:8081/demo1/set_session 查看projectName如图 - 访问
demo2获取session地址 localhost:8082/demo2/get_session 查看projectName如图,看到的是demo1设置的projectName - 再调用
demo2的设置session地址 localhost:8082/demo2/set_session,查看redis中的数据,已经被修改 - 再访问
demo1查看session,展示的就是demo2
- 访问
至此SpringBoot使用Redis来实现Session共享设置成功
真正在项目实际应用中,是通过
Nginx进行代理自动分配访问哪个项目,而不是想我这样手动修改请求的链接来查看效果
参考博客: https://bestzuo.cn/posts/859382359.html
作者: 只是学习学习
邮箱: fengzxia1000@163.com
原文地址: https://fengzxia.gitee.io/posts/7e7e2192.html
版权声明: 商业转载请联系作者获得授权,非商业转载请注明出处。