Redis의 GET 및 SET 마스터하기: 기본 데이터 작업

Redis 데이터 관리의 기초를 `GET` 및 `SET` 명령에 대한 이 종합 가이드와 함께 마스터하세요. 기본 문자열 저장 및 검색 방법을 배우고, 원자적 설정(`NX`/`XX`) 및 통합 키 만료(`EX`/`PX`)와 같은 필수 고급 옵션을 탐색하십시오. 이러한 기본 명령이 고성능 캐싱 계층을 구축하는 데 어떻게 중요한지 알아보십시오.

39 조회수

Redis GET 및 SET 마스터하기: 기본 데이터 작업

Redis는 인메모리 데이터 구조 저장소, 캐시 및 메시지 브로커로 작동하며 속도와 다용성으로 유명합니다. Redis와의 모든 상호 작용의 핵심은 구조를 정의하는 키-값 쌍을 관리하는 데 사용되는 기본 명령입니다. 이 글은 Redis에서 데이터 지속성 및 검색의 기반이 되는 SETGET 명령을 마스터하기 위한 포괄적인 가이드 역할을 합니다.

이 두 가지 간단하면서도 강력한 명령을 이해하는 것은 고성능 애플리케이션 구축에 매우 중요합니다. 간단한 캐싱 계층을 구현하든 세션 데이터를 관리하든 SETGET을 효율적으로 사용하면 Redis 인스턴스 내에서 빠른 액세스와 안정적인 데이터 처리를 보장할 수 있습니다.

Redis 키-값 모델

명령으로 들어가기 전에 Redis가 간단한 키-값 저장소 모델로 작동한다는 점을 기억하는 것이 중요합니다. 모든 데이터 조각(값)은 고유 식별자(키)를 사용하여 액세스됩니다. 키는 문자열이며 값은 다양한 데이터 유형(문자열, 목록, 세트, 해시 등)일 수 있습니다. SETGET은 주로 Redis에서 가장 기본적이고 자주 사용되는 유형인 문자열 데이터 유형을 처리합니다.

1. 데이터 설정: SET 명령

SET 명령은 키에 값을 할당하는 데 사용됩니다. 키가 이미 데이터를 보유하고 있다면 SET 명령은 기존 값을 덮어씁니다. 기본 구문은 간단합니다.

기본 구문 및 사용법

가장 간단한 형태는 키와 값만 필요합니다.

SET key value

예시: 사용자 이름 저장

127.0.0.1:6379> SET user:100:name "Alice Johnson"
OK

127.0.0.1:6379> GET user:100:name
"Alice Johnson"

고급 SET 옵션: NX, XX 및 만료

SET의 강력함은 원자적 조건부 설정 및 타임아웃(TTL) 관리를 허용하는 선택적 인수에 있습니다. 이러한 옵션은 잠금 및 캐시를 올바르게 구현하는 데 필수적입니다.

A. 조건부 설정 (NXXX)

이 옵션은 설정 작업이 언제 발생하는지 제어하여 우발적인 덮어쓰기를 방지하거나 키가 존재하는 경우에만 덮어쓰기가 발생하도록 합니다.

  • NX (존재하지 않음): 키가 이미 존재하지 않는 경우에만 설정합니다. 간단한 분산 잠금을 구현하는 데 탁월합니다.
    redis SET my_lock_key some_unique_value NX

  • XX (존재함): 키가 이미 존재하는 경우에만 설정합니다. 키가 이미 채워져 있다고 확신할 때만 특정 키를 업데이트하는 데 유용합니다.
    redis SET session:token:456 new_value XX

B. 만료 시간 설정(TTL)

메모리를 관리하고 시간 기반 캐싱을 구현하기 위해 SET 명령 내에서 직접 만료 시간을 설정할 수 있습니다. 이는 키를 설정한 다음 EXPIRE를 별도로 호출하는 것보다 훨씬 효율적입니다.

  • EX seconds: 만료 시간을 단위로 설정합니다.
  • PX milliseconds: 만료 시간을 밀리초 단위로 설정합니다.
  • EXAT timestamp: 특정 Unix 타임스탬프(초)로 만료를 설정합니다.
  • PXAT timestamp: 특정 Unix 타임스탬프(밀리초)로 만료를 설정합니다.

예시: 한 시간(3600초) 후에 만료되도록 키 설정

127.0.0.1:6379> SET cache:product:500 "Product Details" EX 3600
OK

127.0.0.1:6379> TTL cache:product:500 
(integer) 3598 

권장 사항: 캐싱 시 항상 SET key value EX N(또는 PX N)을 사용하십시오. 이렇게 하면 Redis가 충돌하고 다시 시작되어도 만료된 키가 결국 정리되어 오래된 데이터가 축적되는 것을 방지할 수 있습니다.

옵션 결합

모든 옵션을 결합하여 복잡한 원자적 작업을 수행할 수 있습니다.

# 키가 존재하지 않는 경우에만 설정하고 60초 후에 만료되도록 설정
SET my_config_setting "active" NX EX 60

2. 데이터 검색: GET 명령

GET 명령은 주어진 키와 관련된 문자열 값을 검색합니다. Redis에서 수행하는 가장 빠른 작업 중 하나이며 종종 마이크로초 안에 완료됩니다.

기본 구문 및 사용법

GET key

예시: 저장된 사용자 이름 검색

127.0.0.1:6379> GET user:100:name
"Alice Johnson"

존재하지 않는 키 처리

키가 존재하지 않으면 GET은 아무것도 찾을 수 없음을 나타내는 특수 응답을 반환합니다.

127.0.0.1:6379> GET non_existent_key
(nil)

애플리케이션 코드에서 (nil)을 받는 것은 데이터가 누락되었음을 확인하는 표준 방법이며, 일반적으로 애플리케이션이 기본 소스(데이터베이스와 같은)에서 데이터를 가져와 Redis에 다시 쓰는 작업을 트리거해야 하는 캐시 누락을 유발합니다.

만료 정보가 있는 값 검색 (GETGETEX)

기본 GET 명령은 값만 반환하지만 때로는 키가 만료될 예정인지 알아야 할 때가 있습니다. GETEX 명령(또는 최신 Redis 버전에서 특정 플래그와 결합된 GET 사용)은 값과 남은 TTL(Time To Live)을 모두 반환할 수 있습니다.

그러나 표준 사용의 경우 더 간단한 접근 방식은 GET 다음에 TTL을 사용하여 만료를 확인해야 하는 경우 또는 키가 자동으로 사라지는 것을 단순히 신뢰하는 것입니다.

3. 실용적인 적용: GETSET을 사용한 캐싱

GETSET의 기본 사용 사례는 간단한 캐시-사이드 패턴을 구현하는 것입니다.

애플리케이션 로직 단계:
1. 검색 시도 (GET): 애플리케이션은 먼저 GET key를 사용하여 데이터 검색을 시도합니다.
2. 캐시 적중: 결과가 (nil)이 아니면 즉시 데이터가 반환됩니다(빠름).
3. 캐시 누락: 결과가 (nil)인 경우:
a. 애플리케이션은 느린 기본 데이터 저장소(예: PostgreSQL)에서 데이터를 가져옵니다.
b. 애플리케이션은 SET key value EX [duration]을 사용하여 Redis에 새 데이터를 다시 씁니다.
c. 그런 다음 데이터가 사용자에게 반환됩니다.

이 패턴은 자주 액세스되는 데이터를 메모리에서 직접 제공하여 대기 시간을 크게 줄입니다.

요약 및 다음 단계

SETGET 명령은 Redis 데이터와 상호 작용하기 위한 필수 진입점입니다. 겉보기에는 간단하지만 SET의 선택적 인수(특히 NX, XX 및 만료 수정자(EX, PX))는 강력한 프로덕션 등급 시스템에 필요한 원자적 제어를 제공합니다.

핵심 요점:
* 간단한 쓰기의 경우 SET key value를 사용하십시오.
* 기존 데이터를 덮어쓰지 않으려면 SET key value NX를 사용하십시오.
* 키가 자동으로 만료되도록 하려면 SET key value EX 3600을 사용하십시오(한 시간 후).
* 데이터를 검색하려면 GET key를 사용하십시오. 키가 없거나 만료된 경우 (nil)을 예상하십시오.

이러한 기본 작업에 익숙해지면 Redis의 다른 데이터 유형(예: 해시(HSET, HGET) 및 목록(LPUSH, RPOP))을 탐색하여 이 강력한 인메모리 저장소의 잠재력을 최대한 활용하십시오.