Loger's blog site

Loger's blog site,分享编程知识,顺便发发牢骚

0%

【快学springboot】11.整合redis实现session共享

前言

这里都是基于前面的项目基础上的。springboot整合redis非常的方便,这也是springboot的宗旨,简化配置。这篇文章就教大家如何使用springboot整合redis来实现session共享。

引入依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.session</groupId>

<artifactId>spring-session-data-redis</artifactId>

</dependency>

配置redis

在application.properties中配置redis

1
2
3
4
5
6
7
8
9
10
11
# Redis服务器地址

spring.redis.host=localhost

# Redis服务器连接端口

spring.redis.port=6379

# Redis服务器连接密码(默认为空)

spring.redis.password=

因为我本地redis没有设置密码,所以密码这里留空。这个配置项可以去掉,但是我留在这是是想告诉大家可以在这里配置redis密码

实现session共享

其实springboot实现session共享非常的方便,只需要一个@EnableRedisHttpSession注解即可。把该注解加在springboot启动类的上面。

【快学springboot】11.整合redis实现session共享

到这里,已经实现redis存储session的功能了。下面通过一个简单例子测试下session是否存储在redis中了。

新建一个SessionController.java,并且写一个设置session的方法,如下:

【快学springboot】11.整合redis实现session共享

启动项目,通过postman调用,如下:

【快学springboot】11.整合redis实现session共享

通过redis可视化工具,查看redis中是否存在该属性:

【快学springboot】11.整合redis实现session共享

通过查看,happyjava已经存在redis中了。

使用nginx测试

通过上面的例子,已经证明了session被redis存储了,下面,我们通过把应用启动在两个端口,使用nginx转发,测试session是否真的共享了。

nginx.config配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
upstream session_server {

server 127.0.0.1:8080;

server 127.0.0.1:8081;

}

server {

listen 80;

server_name localhost;

location / {

proxy_pass http://session_server;

proxy_set_header Host $host;

}

}

这里把localhost这个请求,转发到了本地的8080和8081端口。

通过server.port指定程序的端口号

application.properties

1
server.port=8081

写一个获取session的方法

SessionController.java

【快学springboot】11.整合redis实现session共享

这里通过Value注解获取了配置文件的server.port属性,并且通过getSession方法返回。

把程序启动在两个端口

IDEA设置可以多次启动同个main方法。

【快学springboot】11.整合redis实现session共享

【快学springboot】11.整合redis实现session共享

把Allow paralled run勾上,即可多次启动一个main方法了。我们先把server.port设置为8080启动一次,然后改为8081再次启动。

通过postman多次调用,可以获得结果如下:

【快学springboot】11.整合redis实现session共享

【快学springboot】11.整合redis实现session共享

可以看到,port分别出现了8080和8081,并且都能够正常获取到之前设置的happyjava这个值,说明session共享已经配置成功了。

总结

springboot配置session共享是非常方便的,只需要EnableRedisHttpSession注解即可。其实也可以使用EnableMongoHttpSession注解用MongoDB来管理session。