Spring boot(二)使用redis实现session共享
程序员文章站
2022-05-17 10:37:58
...
默认 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,如果存储的是序列化的对象的话,会出现一些看不懂的值,但是基本上会看到一些对象的属性字段
推荐阅读
-
PHP使用Redis实现Session共享的实现示例
-
nginx+tomcat实现负载均衡,使用redis session共享
-
Spring boot集成spring session实现session共享的方法
-
Spring Boot分布式系统实践【扩展1】shiro+redis实现session共享、simplesession反序列化失败的问题定位及反思改进
-
一篇文章带你搞定 SpringBoot 中使用 redis 实现 session 共享
-
PHP使用Redis实现Session共享的实现示例
-
Spring boot + redis 实现session 共享管理
-
Spring boot(二)使用redis实现session共享
-
java | Spring Boot 与 Redis 实现 Cache 以及 Session 共享
-
spring-session redis实现session共享