임베디드 레디스 (Embedded Redis)
- Redis의 임베디드 버전이다.
- 어플리케이션 내에 직접 통합하여 사용할 수 있는 형태이다.
- 어플리케이션과 함께 배포 및 실행할 수 있어, 외부 서버에 의존하지 않고도 빠르게 데이터 저장 및 조회기능을 사용할 수 있다.
- 테스트 환경을 구성하거나, 작으 규모의 프로젝트에서 Redis를 간편하게 할 수 있도록 해준다.
- 실제 운영 환경에서의 경우, 별도의 서버에 Redis 서버를 구축하여 사용하는 것이 대중적이다.
사용 목적
- SpinLock을 활용하여 동시성 제어를 수행할 수 있다.
* SpinLock (스핀락) : 임계 구역(critical section)에 진입이 불가능할 때 진입이 가능할 때까지 루프를 돌면서 재시도하는 방식으로 구현된 락
- 동시성 제어를 AOP( Aspect-Oriented Programming, 관점-지향 프로그래밍)를 활용하여 실습하는 데 활용할 수 있다.
주요 특징
- 빠른 성능 : Redis는 메모리 기반의 데이터 저장소로, 매우 빠른 읽기 및 쓰기 성능을 제공합니다.
- 간편한 통합 : 애플리케이션에 쉽게 통합할 수 있어, 별도의 서버 설정이 필요 없다.
- 데이터 구조 : Redis의 다양한 데이터 구조(스트링, 리스트, 셋, 해시 등)를 사용할 수 있다.
- 개발 편의성 : 테스트 환경이나 작은 규모의 프로젝트에 유용하며, 프로토타입 제작 시 유리하다.
자바에서의 사용 방법
라이브러리 적용하기
- embedded-redis는 Redis를 JVM 내에서 실행할 수 있게 해준다.
- Maven 또는 Gradle을 사용하여 의존성을 추가할 수 있다.
의존성 추가 예시 - Maven
<dependency>
<groupId>com.github.codemonstur</groupId>
<artifactId>embedded-redis</artifactId>
<version>1.4.3</version> <!-- 최신 버전 확인 필요 -->
<scope>test</scope>
</dependency>
의존성 추가 예시 - Gradle
testImplementation 'com.github.codemonstur:embedded-redis:1.4.3' // 최신 버전 확인 필요
예시
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class RedisTest {
private EmbeddedRedisServer redisServer;
private Jedis jedis;
@BeforeEach
public void setUp() {
redisServer = EmbeddedRedisServer.start();
jedis = new Jedis("localhost", 6379);
}
@AfterEach
public void tearDown() {
jedis.close();
redisServer.stop();
}
@Test
public void testRedisFunctionality() {
jedis.set("key", "value");
assertEquals("value", jedis.get("key"));
}
}
⊙ 참고 문헌
- 양세열, 「백엔드 취업 파트타임 스쿨 5기:Part 07. 스프링 프레임워크- Chapter 07. 사전 준비- 07.Embedded Redis 실행-001」, 제로베이스, 2024년 09월 21일, https://zero-base.co.kr/
- ChatGPT, "임베디드 레디스"에 대한 답변, 2024년 09월 21일, https://chatgpt.com/
- ChatGPT, "자바 Embedded Redis"에 대한 답변, 2024년 09월 21일, https://chatgpt.com/