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

springboot 780 浏览

请输入图片描述

默认 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,如果存储的是序列化的对象的话,会出现一些看不懂的值,但是基本上会看到一些对象的属性字段

关注微信公众号 "Kooola大数据" :) 聊人生 | 聊技术