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实现踢人等扩展功能,总之应用广泛

成功又水了一篇文章


本作品采用知识共享署名 4.0 国际许可协议进行许可。

如果可以的话,请给我钱请给我点赞赏,小小心意即可!

Last modification:September 12, 2019
If you think my article is useful to you, please feel free to appreciate