String형

강코딩·2025년 10월 24일

레디스

목록 보기
5/21

1️⃣ String형 개요

가장 기본적이고 단순한 자료형 (Key-Value 구조)

문자열, 정수, 실수(부동소수점) 등 모든 데이터 저장 가능.

내부적으로는 SDS(Simple Dynamic String) 구조로 관리.

최대 저장 크기: 512MB (기본값, 설정으로 10GB까지 확장 가능)
(proto-max-bulk-len, client-query-buffer-limit 설정으로 변경 가능)

2️⃣ String형의 주요 사용 예시

캐시(Cache)
예: 세션 정보, 웹 페이지 데이터, 쿠키, 임시 사용자 데이터 등

카운터(Counter)
예: 조회수, 좋아요 수, 트래픽 카운터 등

실시간 메트릭(Realtime Metrics)
예: API 요청 수, 사용자 활동 수

임시 데이터 저장
예: JSON 문자열, 이미지 base64 데이터 등

🧮 자주 사용하는 명령어 정리
명령어 설명 시간 복잡도 예시
SET key value 키에 값 저장 O(1) SET user:1 "John"
GET key 값 조회 O(1) GET user:1
MSET key value ... 여러 키에 값 한 번에 저장 O(N) MSET a 1 b 2
MGET key ... 여러 키 값 한 번에 조회 O(N) MGET a b
APPEND key value 기존 값 뒤에 문자열 추가 O(1) APPEND user:bio "engineer"
STRLEN key 문자열 길이 반환 O(1) STRLEN user:bio
GETRANGE key start end 범위 지정 부분 문자열 반환 O(N) GETRANGE bio 0 5
SETRANGE key offset value 지정 위치부터 덮어쓰기 O(1) SETRANGE bio 3 "Hi"
INCR key 정수 값 1 증가 O(1) INCR visit_count
INCRBY key n 지정 값만큼 증가 O(1) INCRBY score 10
INCRBYFLOAT key f 실수(부동소수점) 증가 O(1) INCRBYFLOAT price 0.5
DECR key 1 감소 O(1) DECR stock
DECRBY key n n만큼 감소 O(1) DECRBY stock 5
GETDEL key 값 가져오고 키 삭제 O(1) GETDEL temp
GETEX key [옵션] TTL 설정과 동시에 값 가져오기 O(1) GETEX session EX 60
MSETNX key value ... 키가 존재하지 않을 때만 저장 O(N) MSETNX a 1 b 2
🔧 주의사항 및 팁

INCR, DECR 명령은 값이 숫자일 때만 동작.
숫자가 아닌 문자열이면 ERR value is not an integer or out of range 오류 발생.

INCRBYFLOAT 사용 시 float 형식이 아니면 오류 발생.

MSETNX는 모든 키가 존재하지 않아야 성공, 하나라도 존재하면 전체 실패.

GETDEL, GETEX는 Redis 6.2 이상에서 사용 가능.

🚀 실무 활용 팁 (+@)

세션 캐싱

SET session:123 '{"user_id":42,"token":"abc"}' EX 3600

→ 로그인 세션 데이터를 TTL(유효시간)과 함께 저장.

API 요청 카운터

INCR api:count

→ 매 요청마다 카운트 증가. rate limiting 로직에 활용 가능.

가격 데이터 누적

INCRBYFLOAT price:BTC 0.0001

→ 실시간 가격 변동 저장 시 유용.

키 초기화와 TTL 동시 처리

GETEX temp:cache EX 60

→ 캐시 만료와 동시에 값 리턴.

동시성 충돌 방지
MSETNX를 이용해 원자적 초기화(atomic initialization) 가능.
예: 여러 서버에서 동시에 같은 키를 세팅할 때 race condition 방지.

profile
주니어 풀스택개발자

0개의 댓글