대규모 웹 애플리케이션에서는 세션 관리가 매우 중요하며 이는 단일 머신 스토리지로는 충족될 수 없습니다.
일반적으로 다음과 같은 방법이 있습니다.
데이터베이스에 대한 세션 지속성. 그러나 단점은 읽기 및 쓰기 비용이 너무 높다는 것입니다.
쿠키에 정보를 저장하는 것과 같은 세션 해제는 크기가 제한되어 있다는 것입니다.
3. Redis와 같은 분산 nosql 데이터베이스에 세션을 저장합니다.
maven 핵심 종속성 spring-session-data-redis
<!--基于redis的分布式session存储--> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
을 추가합니다. 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 ######
@Configuration @EnableRedisHttpSession(redisNamespace = "mysession",maxInactiveIntervalInSeconds = 60*60*24) public class SessionConfig
@EnableRedisHttpSession 주석의 소스 코드는 다음과 같습니다.
maxInactiveIntervalInSeconds: 세션 내 데이터의 만료 시간(redis의 세션 아님) 만료 시간)
내 구성에서는 현재 애플리케이션을 식별하기 위해 "mysession"이라는 네임스페이스를 지정했습니다.
redisFlushMode: redis가 세션, 기본 ON_SAVE
에는 두 가지가 있습니다. 단방향: IMMEDIATE: 세션이 생성된 후 즉시 저장 ON_SAVE: 세션이 생성될 때 저장되지 않지만, 세션에 데이터를 추가할 때 저장됩니다
@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
컨트롤러 작성
@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 메소드는 브라우저가 전달한 매개변수를 수신하여 저장합니다. Redis에 저장
redis에서 정보를 보면 다음과 같은 정보를 알 수 있습니다.
spring:session이 자동으로 추가되고, 우리가 만든 네임스페이스 mysession이 이 기본 디렉터리에 있습니다
다음으로 http: //localhost:8080/getName을 방문하면 방금 세션에 저장한 관리자가 브라우저에 표시되는 것을 볼 수 있습니다
위 내용은 Spring Boot를 사용하여 Redis 기반 분산 세션 캐시를 빠르게 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!