从零开始使用IDEA搭建Springboot+JPA+Swagger2.0+Logback+Lombok+Redis+Shiro1.4项目(六)
Springboot 整合 Redis (Redis 管理 session)
什么是 Redis
Redis
通常被称为数据结构服务器,因为值value
可以是字符串(String
),哈希(Hash
),列表(list
),集合(sets
)和有序集合(sorted sets
)等类型。
准备工作
- 下载
Redis
。 - 配置环境变量,将
Redis
的路径配置到Path
中。 - 打开
cmd
,启动服务:
redis-server.exe
如图则启动成功,关闭当前窗口则服务关闭。
配置
添加 pom.xml 依赖
添加Redis
所需依赖。
<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>
配置 application.yml 文件
spring.session.store-type
:会话存储类型,启用Redis
管理session
spring.session.timeout
:超出时间则session
失效
spring.session.redis.flush-mode
:session
更新策略
spring.session.redis.namespace
:用于存储会话的密钥的命名空间
spring.redis.host
:连接的redis的ip地址
spring.redis.port
:连接的redis的端口
spring:
session:
store-type: redis
timeout: 3600s
redis:
flush-mode: on_save
namespace: spring:session
redis:
host: localhost
port: 6379
修改 Application 类
主类添加 @EnableRedisHttpSession 注解,该注解会创建一个名字叫springSessionRepositoryFilter
的Spring Bean
,其实就是一个Filter
,这个Filter
负责用Spring Session
来替换原先的默认HttpSession
实现。
package com.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
@SpringBootApplication
@EnableRedisHttpSession
public class Application {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
测试
将项目复制一份,其中一个项目以另一个端口如8081
运行。
在控制层中,有一个方法可以获取用户登录时的帐号并存入session
。
8080
端口:登录前,账号信息为空。
8080
:登录后,可以看到帐号信息。
使用8081
端口直接查询帐号信息,同样可以看到账号信息。
总结
Redis
管理session
的作用:大致可以理解为,在同一台电脑上,浏览某个网站,在当前界面使用的是这个端口,而界面跳转后端口变了,这是想要继续浏览就需要进行二次登录,严重影响用户体验。使用Redis
管理session
可以使session
在多个端口之间共享,免去了重复登录的麻烦。