SpringBoot中使用Redis作为Session的存放服务器
简述
在之前我们介绍了Redis和Cache,这次我们来说说Spring Session,在默认情况下,SpringBoot使用Tomcat服务器的Session实现,Session管理是通过Tomcat提供的org.apache.catalina.session.StandardSessionFacade
进行实现的
引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--Redis Session-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
配置
我们在application.properties或者application.yml进行如下配置
spring:
session:
store-type: Redis
spring.session.store-type=Redis
以上只是配置替换SpringBoot中默认的Session服务器,并没有配置Redis服务器相关,因为在之前我们已经讲到过
测试
如下是使用SpringBoot默认的Tomcat管理Session
现在我们来看看采用Redis作为我们的Session服务器是什么样子的
首先我们需要启动本地的Redis服务器
进入到Redis目录(本人穷,所以用Window版的作测试,欢迎大佬赞助我,之后计划开发一个项目)
开启Redis服务
D:\redis\redis-Windows>redis-server.exe redis.windows.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 12992
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[12992] 20 Jul 00:06:57.103 # Server started, Redis version 3.2.100
[12992] 20 Jul 00:06:57.105 * DB loaded from disk: 0.000 seconds
[12992] 20 Jul 00:06:57.105 * The server is now ready to accept connections on port 6379
之后我们采用上文的配置再次启动项目
在这里遇到一个错误,我使用的是springBoot2.1.5的发布版,但是使用redis作为Session管理服务器的时候给我报了一堆错误,然后我尝试降低SpringBoot版本就能够成功启动了,不知道是什么导致冲突问题的,可能是由于
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
这个开发工具包导致的问题,我没有深究
结语
常规的应用就是使用Redis将Session存储实现单点登录,还可以存储Token实现踢人等扩展功能,总之应用广泛
成功又水了一篇文章