- 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를 사용할 수 있도록 합니다.
- 중복 요청을 방지할 Redis 키 생성
Redis를 사용하여 중복 요청을 방지하려면 각 요청에 대한 고유한 식별자를 생성해야 합니다. 이 식별자를 Redis 키로 사용하여 중복 요청을 방지합니다.
Spring Framework에서는 요청을 처리하는 데 사용되는 컨트롤러 메서드에 @RequestMapping 애너테이션을 추가할 수 있습니다. 이 애너테이션에는 요청 경로와 HTTP 메서드가 정의됩니다. 컨트롤러 메서드에서는 이 정보를 사용하여 고유한 요청 식별자를 생성할 수 있습니다.
다음과 같은 요청 식별자를 생성할 수 있습니다.
String requestId = request.getMethod() + ":" + request.getRequestURI();
- 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을 발생시킵니다. 이렇게 함으로써, 같은 요청이 중복으로 수신되는 것을 방지할 수 있습니다.
- key 만료 시키기.
Redis에 저장된 중복 요청 키를 만료시킴으로써 Redis의 메모리를 최적화할 수 있습니다. 이를 위해 RedisTemplate을 사용하여 키의 만료 시간을 설정합니다.
ops.expire(requestId, Duration.ofSeconds(60));
내저장소 바로가기 luxury515
'Springboot3.0 > 핵심기능' 카테고리의 다른 글
Spring IoC 에 관하여. (0) | 2023.04.15 |
---|---|
Spring Security 와 Siro 에 대한 비교 (0) | 2023.04.15 |
Redis를 이용한 refresh token (0) | 2023.04.11 |
Springboot3.0 에서 kafka적용해보기 (0) | 2023.04.11 |
스프링부트 3.0에서 Coffine 라이브러리 설정하기 (0) | 2023.04.11 |