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

发布时间:『 2019-06-08 00:43:17 』  博客类别:快学springboot  阅读(-1)

前言

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

引入依赖

<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
# 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配置

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
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。


上一篇:还在用SimpleDateFormat?Java8都发布N年了,转LocalDateTime吧

下一篇:【快学springboot】10.使用@Async注解创建多线程,自定义线程池


Happyjava的博客

何以解忧?唯有定投!可以是定期投资,也可以是定期学习,不冲突!

个人QQ号: 「1015030682」

联系邮箱: 「happyjava@foxmail.com」

备案号:浙ICP备17032647号-3