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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值