728x90
  1. Redis를 Spring Framework 적용.

Spring Data Redis를 사용하여 Redis를 Spring Framework에 통합할 수 있습니다. 이를 위해 먼저 pom.xml 또는 build.gradle 파일에 필요한 의존성을 추가하고, Redis 구성을 설정해야 합니다.

pom.xml 파일에 아래와 같이 의존성을 추가할 수 있습니다.

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>2.6.0</version>
</dependency>

Redis 구성은 RedisConnectionFactory, RedisTemplate 및 RedisCacheManager를 포함하는 구성 클래스를 작성하여 구현할 수 있습니다. 이 구성 클래스는 Redis 호스트 및 포트와 같은 Redis 구성을 정의하고 Spring Framework에서 Redis를 사용할 수 있도록 합니다.

  1. 중복 요청을 방지할 Redis 키 생성

Redis를 사용하여 중복 요청을 방지하려면 각 요청에 대한 고유한 식별자를 생성해야 합니다. 이 식별자를 Redis 키로 사용하여 중복 요청을 방지합니다.

Spring Framework에서는 요청을 처리하는 데 사용되는 컨트롤러 메서드에 @RequestMapping 애너테이션을 추가할 수 있습니다. 이 애너테이션에는 요청 경로와 HTTP 메서드가 정의됩니다. 컨트롤러 메서드에서는 이 정보를 사용하여 고유한 요청 식별자를 생성할 수 있습니다.

다음과 같은 요청 식별자를 생성할 수 있습니다.

String requestId = request.getMethod() + ":" + request.getRequestURI();
  1. Redis에 중복 요청 키 저장

Redis에 중복 요청을 방지하기 위한 키를 저장합니다. 이를 위해 RedisTemplate을 사용하여 Redis에 키-값 쌍을 저장합니다.

ValueOperations<String, String> ops = redisTemplate.opsForValue();
Boolean success = ops.setIfAbsent(requestId, "true", Duration.ofSeconds(60));
if (!success) {
    throw new DuplicateRequestException("Duplicate request");
}

위 코드에서는 Redis에 requestId 키가 없으면 "true" 값을 저장하고, 만약 이미 존재한다면 DuplicateRequestException을 발생시킵니다. 이렇게 함으로써, 같은 요청이 중복으로 수신되는 것을 방지할 수 있습니다.

  1. key 만료 시키기.

Redis에 저장된 중복 요청 키를 만료시킴으로써 Redis의 메모리를 최적화할 수 있습니다. 이를 위해 RedisTemplate을 사용하여 키의 만료 시간을 설정합니다.

ops.expire(requestId, Duration.ofSeconds(60));

내저장소 바로가기 luxury515

+ Recent posts