如何使用Spring boot基于Redis快速搭建分布式Session缓存
使用Springboot基于Redis快速搭建分布式Session缓存方案大型web应用中,session的管理非常重要,这是单机存储满足不了的.通常有以下几种方法:将session持久化到数据库中.但缺点是读写成本太高.去session化,比如将信息存储到cookie中.但缺点是大小有限制,并且不安全.3.将session存储到一个分布式的nosql数据库中,比如Redis.第一步:搭建SpringBoot开发环境添加maven核心依赖spring-session-data-redisorg.sprin
使用Spring boot基于Redis快速搭建分布式Session缓存方案
大型web应用中,session的管理非常重要,这是单机存储满足不了的.
通常有以下几种方法:
将session持久化到数据库中. 但缺点是读写成本太高.
去session化,比如将信息存储到cookie中. 但缺点是大小有限制,并且不安全.
3 . 将session存储到一个分布式的nosql数据库中,比如 Redis.
第一步:搭建Spring Boot开发环境
添加maven核心依赖 spring-session-data-redis
org.springframework.session spring-session-data-redis
在application.properties文件中配置redis连接属性
###### Redis config start ###### spring.redis.database=0 spring.redis.host=192.168.41.60 spring.redis.port=6379 spring.redis.password= spring.redis.pool.max-active=20 spring.redis.pool.max-wait=-1 spring.redis.pool.max-idle=8 spring.redis.pool.min-idle=0 spring.redis.timeout=0 ###### Redis config end ######
第二步:开启 @EnableRedisHttpSession 注解
@Configuration @EnableRedisHttpSession(redisNamespace = "mysession",maxInactiveIntervalInSeconds = 60*60*24) public class SessionConfig
@EnableRedisHttpSession注解的源码如下,可以看到可以配置三个参数:
maxInactiveIntervalInSeconds :session中的数据的过期时间(不是session在redis中的过期时间)
redisNamespace :命名空间,可以配置当前应用的名称,我这里配置了 mysession.
redisFlushMode :redis保存session的方式,默认 ON_SAVE
有两种方式:IMMEDIATE:一旦创建session的时候就立即保存.ON_SAVE:创建session的时候不会保存,但当往session中添加数据的时候就会保存
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({ java.lang.annotation.ElementType.TYPE })
@Documented
@Import(RedisHttpSessionConfiguration.class)
@Configuration
public @interface EnableRedisHttpSession
int maxInactiveIntervalInSeconds() default 1800;
String redisNamespace() default "";
RedisFlushMode redisFlushMode() default第三步:测试
编写一个controller
@RestController
public class HelloController
@RequestMapping("/hello/{username}")
public String hello(HttpSession session, @PathVariable(value = "username") String username) {
session.setAttribute("username", username);
return "保存session到Redis成功";
}
@RequestMapping("/getName")
public String getUsername(HttpSession session) {
String username = (String) session.getAttribute("username");
return当浏览器访问 http://localhost:8080/hello/admin 这个链接,
hello方法会接受到 浏览器传过来的参数,并保存在session中,然后再把session保存到Redis中
通过查看redis中的信息可看到如下信息:
其中 spring:session 是自动添加的,我们创建的命名空间 mysession 在这个默认的目录下面
接下来我们再访问 http://localhost:8080/getName ,便可以看到浏览器会显示 刚才我们保存再session中的 admin
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















