欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring boot(二)使用redis实现session共享

程序员文章站 2022-05-17 10:37:58
...

Spring boot(二)使用redis实现session共享

默认 HttpSession 是通过 Servlet 容器创建和管理,保存在内存中,这种情况无法做到多个服务之间的 session 共享。
使用 Redis 将 session 剥离服务进程,多个服务的进程便可以共享 session。
不做自定义配置情况下,spring boot 使用默认的 HttpSession。要想使用 redis 来管理 session 的话,spring boot 提供了一套很简单的方法,几步就能搞定…

依赖引入(maven)

在 maven 的 pom.xml 文件中增加如下依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-redis</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.session</groupId>
  <artifactId>spring-session-data-redis</artifactId>
</dependency>

redis session 配置类

创建类(类名其实任意),注意使用 @EnableRedisHttpSession 以及
@Configuration 注解

@Configuration
@EnableRedisHttpSession
public class HttpSessionConfig {
}

修改配置文件(application.properties)

新增如下redis配置

spring.redis.host=localhost  
spring.redis.port=6379

检查

进入redis客户端命令窗口(redis-cli),使用 keys 命令查看缓存中session

127.0.0.1:6379> keys *session*
1) "spring:session:sessions:expires:f1bca77e-6338-49ee-b493-aa8913d388ad"
2) "spring:session:expirations:1533370560000"
3) "spring:session:sessions:f1bca77e-6338-49ee-b493-aa8913d388ad"

其中 1533370560000 未session失效的时间戳
“:f1bca77e-6338-49ee-b493-aa8913d388ad” 为session id

想获取具体值可以 “hgetall spring:session:sessions:f1bca77e-6338-49ee-b493-aa8913d388ad”来查看对应value,如果存储的是序列化的对象的话,会出现一些看不懂的值,但是基本上会看到一些对象的属性字段