본문 바로가기
서버구축 (WEB,DB)

Redis 명령어 작동 원리: 고성능 데이터 관리의 시각적 이해

by 날으는물고기 2025. 1. 31.

Redis 명령어 작동 원리: 고성능 데이터 관리의 시각적 이해

Redis에서 자주 사용되는 주요 명령어 각각의 설명과 활용법을 명령어 옵션 및 코드 예제와 함께 정리한 내용입니다.

1. SET 명령어

  • 용도: 문자열 값을 특정 키에 저장합니다. 키가 이미 존재하면 기존 값을 덮어씁니다.
  • 옵션
    • EX <seconds>: 지정된 시간(초) 동안만 키가 유지됨.
    • PX <milliseconds>: 지정된 시간(밀리초) 동안만 키가 유지됨.
    • NX: 키가 존재하지 않을 때만 설정.
    • XX: 키가 존재할 때만 설정.

예제

# 단순 저장
SET user:1001 "session_data"

# 유효 시간 10초 설정
SET user:1002 "temp_data" EX 10

# 키가 없을 때만 저장
SET user:1003 "new_data" NX

결과

  • OK: 성공적으로 저장됨.
  • nil: 조건(NX 또는 XX) 만족 못할 때.

2. GET 명령어

  • 용도: 특정 키에 저장된 값을 반환합니다.

예제

GET user:1001

결과

  • session_data: 키에 저장된 값.
  • nil: 키가 존재하지 않을 경우.

3. LPUSH / RPUSH 명령어

  • 용도: 리스트의 앞쪽(LPUSH) 또는 뒤쪽(RPUSH)에 요소를 추가합니다.

예제

# 리스트 뒤쪽에 요소 추가
RPUSH job_queue "job1"
RPUSH job_queue "job2"

# 리스트 앞쪽에 요소 추가
LPUSH job_queue "job0"

결과

  • 숫자 값: 리스트의 요소 개수.

4. LPOP / RPOP 명령어

  • 용도: 리스트의 앞쪽(LPOP) 또는 뒤쪽(RPOP)에서 요소를 제거하고 반환합니다.

예제

# 리스트 앞쪽에서 제거 및 반환
LPOP job_queue

# 리스트 뒤쪽에서 제거 및 반환
RPOP job_queue

결과

  • job0 또는 job2: 제거된 요소.
  • nil: 리스트가 비었을 경우.

5. EXISTS 명령어

  • 용도: 특정 키가 존재하는지 확인합니다.

예제

EXISTS user:1001

결과

  • 1: 키가 존재함.
  • 0: 키가 존재하지 않음.

6. DEL 명령어

  • 용도: 특정 키를 삭제합니다.

예제

DEL user:1001

결과

  • 숫자 값: 삭제된 키의 수.

7. INCR / DECR 명령어

  • 용도: 특정 키의 값을 정수로 증가(INCR) 또는 감소(DECR)시킵니다.

예제

# 값 증가
INCR page_view

# 값 감소
DECR page_view

결과

  • 증가 또는 감소된 값.

8. SADD / SREM 명령어

  • 용도: 집합(Set)에 요소를 추가(SADD)하거나 제거(SREM)합니다.

예제

# 집합에 요소 추가
SADD online_users "user1"

# 집합에서 요소 제거
SREM online_users "user1"

결과

  • 1: 성공적으로 추가/제거됨.
  • 0: 실패(이미 존재하거나 없음).

9. SMEMBERS 명령어

  • 용도: 집합에 있는 모든 요소를 반환합니다.

예제

SMEMBERS online_users

결과

  • 집합에 포함된 모든 요소.

10. EXPIRE 명령어

  • 용도: 특정 키에 TTL(유효 시간)을 설정합니다.

예제

EXPIRE user:1001 60

결과

  • 1: TTL 설정 성공.
  • 0: 키가 존재하지 않음.

11. KEYS 명령어

  • 용도: 특정 패턴에 매칭되는 모든 키를 반환합니다. (운영 환경에서는 주의해서 사용해야 함!)

예제

KEYS user:*

결과

  • 특정 패턴에 매칭되는 키 리스트.

12. HSET / HGET 명령어

  • 용도: 해시(Hash) 자료구조에 필드-값 쌍을 저장하거나 가져옵니다.

예제

# 필드-값 쌍 저장
HSET user:1001 name "John" age "30"

# 특정 필드 값 가져오기
HGET user:1001 name

결과

  • OK: 저장 성공.
  • 필드 값: 값 반환.

13. ZADD / ZRANGE 명령어

  • 용도: 정렬된 집합(Sorted Set)에 요소를 추가(ZADD)하거나 범위를 가져옵니다(ZRANGE).

예제

# 요소 추가
ZADD leaderboard 100 "player1"
ZADD leaderboard 200 "player2"

# 점수 순으로 정렬된 요소 반환
ZRANGE leaderboard 0 -1 WITHSCORES

결과

  • 순서대로 정렬된 요소 리스트.

14. FLUSHALL 명령어

  • 용도: 모든 데이터를 삭제합니다. 주의해서 사용해야 합니다.

예제

FLUSHALL

결과

  • OK: 모든 키 삭제.

주의사항

  1. Redis는 매우 빠르고 강력한 도구지만, 명령어를 적절히 사용하지 않으면 성능 문제나 데이터 손실이 발생할 수 있습니다.
  2. KEYSFLUSHALL 같은 명령은 테스트 환경에서만 사용하는 것이 좋습니다.
  3. 데이터 만료(TTL) 및 유효 시간 설정을 통해 적절히 리소스를 관리하세요.

각 명령어는 Redis의 다양한 데이터 구조(String, List, Set, Hash, Sorted Set 등)와 결합하여 유연한 데이터 관리 및 처리가 가능합니다.

728x90

댓글