Spring Boot를 사용하여 Redis 기반 분산 세션 캐시를 빠르게 구축하는 방법

WBOY
풀어 주다: 2023-05-27 20:49:27
앞으로
940명이 탐색했습니다.

Spring Boot를 사용하여 Redis 기반 분산 세션 캐시 솔루션을 빠르게 구축하세요

대규모 웹 애플리케이션에서는 세션 관리가 매우 중요하며 이는 단일 머신 스토리지로는 충족될 수 없습니다.

일반적으로 다음과 같은 방법이 있습니다.

  1. 데이터베이스에 대한 세션 지속성. 그러나 단점은 읽기 및 쓰기 비용이 너무 높다는 것입니다.

  2. 쿠키에 정보를 저장하는 것과 같은 세션 해제는 크기가 제한되어 있다는 것입니다.

3. Redis와 같은 분산 nosql 데이터베이스에 세션을 저장합니다.

1단계: Spring Boot 개발 환경 설정

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 ######
로그인 후 복사

2단계: @EnableRedisHttpSession 주석 활성화

@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
로그인 후 복사

3단계: 테스트

컨트롤러 작성

@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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿