Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Redis Jedis 튜토리얼: Jedis 라이브러리로 키(Key) CRUD 작업 수행하기

이 튜토리얼에서는 Jedis 라이브러리를 사용하여 Redis 키(Key)에 대한 CRUD(생성·조회·수정·삭제) 작업을 수행하는 방법을 단계별로 알아봅니다.

Jedis 라이브러리란?

Jedis는 Redis 데이터 저장소를 위한 Java 클라이언트 라이브러리입니다. 가볍고 사용법이 매우 간단하며, Redis 2.8.x, 3.x.x 및 그 이상 버전과 완벽하게 호환됩니다.

Redis에서 키(Key)란?

Redis에서 키는 데이터 저장소에 값을 저장하고 관리하며 조회하기 위한 고유 식별자 역할을 합니다. 모든 값은 반드시 하나의 키와 연결되며, 이 키를 통해서만 데이터에 접근할 수 있습니다.

프로젝트 설정

사용 중인 IDE에서 간단한 Maven 프로젝트를 생성한 뒤, pom.xml 파일에 아래 의존성을 추가합니다.

<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>3.0.1</version>
</dependency>

최신 버전의 Jedis 라이브러리는 Maven Central 저장소에서 확인할 수 있습니다.

Redis 설치

실습을 진행하려면 최신 버전의 Redis가 로컬 환경에 설치되어 있어야 합니다. 운영체제에 맞는 설치 방법은 Redis 공식 문서를 참고하세요.

Jedis 연결

Java 코드를 Redis에 연결하려면 Jedis(redis.clients.jedis.Jedis) 클래스의 객체를 생성합니다.

Jedis jedis = new Jedis();

로컬 머신에서 기본 포트(6379)로 Redis 서비스를 실행했다면 기본 생성자만으로 충분합니다. 그렇지 않은 경우에는 올바른 호스트 주소와 포트 번호를 생성자 인자로 전달해야 합니다.

키에 만료 시간(TTL) 설정

키에 만료 시간을 설정하는 메서드는 네 가지가 있습니다.

  1. expire : 초 단위로 만료 시간을 설정합니다.
    /* key-1에 300초 만료 시간 설정 */
    jedis.expire("key-1", 300);
  2. pexpire : 밀리초 단위로 만료 시간을 설정합니다.
    /* key-1에 30,000밀리초(30초) 만료 시간 설정 */
    jedis.pexpire("key-1", 30000);
  3. expireAt : Unix 타임스탬프(초 단위)로 만료 시점을 지정합니다.
    /* key-1의 만료 시각을 Unix 타임스탬프(초)로 설정 */
    jedis.expireAt("key-1", 1543622400);
  4. pexpireAt : Unix 타임스탬프(밀리초 단위)로 만료 시점을 지정합니다.
    /* key-1의 만료 시각을 Unix 타임스탬프(밀리초)로 설정 */
    jedis.pexpireAt("key-1", 154362240000);

키의 만료 시간 조회

키에 남은 만료 시간을 확인하는 메서드는 두 가지입니다.

  1. ttl : 남은 만료 시간을 초 단위로 반환합니다.
    /* key-1의 남은 만료 시간을 초 단위로 반환 */
    jedis.ttl("key-1");
  2. pttl : 남은 만료 시간을 밀리초 단위로 반환합니다.
    /* key-1의 남은 만료 시간을 밀리초 단위로 반환 */
    jedis.pttl("key-1");

만료 시간 제거

persist 메서드는 키에 설정된 만료 시간을 제거하여 해당 키가 영구적으로 유지되도록 합니다.

/* key-1의 만료 시간 제거 */
jedis.persist("key-1");

패턴으로 키 조회

keys 메서드는 지정된 패턴과 일치하는 하나 이상의 키를 반환합니다.

/* 데이터 저장소의 모든 키 반환 */
jedis.keys("*");
		
/* 'a'로 시작하고 'b'로 끝나는 모든 키 반환 */
jedis.keys("a*b");

키 삭제

del 메서드는 Redis 데이터 저장소에서 키를 삭제할 때 사용합니다.

/* key-1 삭제 */
jedis.del("key-1");
		
/* key-1, key-2, key-3 한 번에 삭제 */
jedis.del("key-1", "key-2", "key-3");

키 존재 여부 확인

exists 메서드는 특정 키가 데이터 저장소에 존재하는지 확인할 때 사용합니다.

/* key-1의 존재 여부 확인 */
Boolean exist = jedis.exists("key-1");

/* key-1, key-2, key-3의 존재 여부 확인 */
Long exist = jedis.exists("key-1", "key-2", "key-3");
/* 하나라도 존재하면 1, 없으면 0이 반환됩니다. */

데이터 타입 확인

type 메서드는 키에 저장된 값의 데이터 타입(string, list, set 등)을 반환합니다.

/* key-1에 저장된 값의 데이터 타입 반환 */
jedis.type("key-1");

Dump (값 직렬화)

dump 메서드는 키에 저장된 값을 직렬화된 형태로 반환합니다. 백업이나 데이터 마이그레이션 작업에 유용하게 활용할 수 있습니다.

/* key-1에 저장된 값의 직렬화된 버전 반환 */
jedis.dump("key-1");

키 이름 변경

저장소에 있는 키의 이름을 변경하는 메서드는 두 가지입니다.

  1. rename : 키 이름을 기존 이름에서 새 이름으로 변경합니다. 새 이름의 키가 이미 존재하면 기존 키를 덮어쓰고 원래 키는 삭제되며, 존재하지 않으면 단순히 이름만 변경됩니다.
    /* old-key를 new-key로 이름 변경 */
    jedis.rename("old-key", "new-key");
  2. renamenx : 새 이름의 키가 존재하지 않는 경우에만 이름을 변경합니다. 덮어쓰기를 방지하고 싶을 때 안전하게 사용할 수 있습니다.
    /* new-key가 없을 때만 old-key를 new-key로 변경 */
    jedis.renamenx("old-key", "new-key");

참고 자료

  1. Redis 공식 문서 — Key Commands

지금까지 Jedis 라이브러리를 사용하여 Redis 키에 대한 CRUD 작업을 수행하는 방법을 살펴보았습니다. 내용이 도움이 되셨다면 댓글로 의견을 남겨주시고, 주변에도 널리 공유해 주세요!