Redis 배워보자-(5)

NTbell·2025년 2월 2일
0

Redis Hashes 자료구조 🛠️

Hashes란?

  • Map(딕셔너리) 형태의 자료구조, value 값이 {key:value, key:value ...} 형태로 구성됨
  • 일반 문자열 저장과 비교
    • JSON 형식의 객체 데이터를 일반 문자열SET 하면, 특정 요소를 수정/삭제할 때 전체 데이터를 변경해야 함
    • Hash는 Map 구조이므로 특정 필드만 수정/삭제가 가능, 더 효율적임

Hashes 주요 명령어

데이터 추가 및 수정

  • HSET key field value → 특정 필드에 값 저장/수정
  • HINCRBY key field increment → 특정 필드 값 증가/감소

데이터 조회

  • HGET key field → 특정 필드 값 조회
  • HGETALL key → 모든 필드 및 값 조회

데이터 삭제

  • HDEL key field → 특정 필드 삭제

Hashes 사용 예제

데이터 추가 및 조회

HSET member:info:1 name choi email choi@gmail.com age 20

특정 요소 조회

HGET member:info:1 name  # 결과: choi

모든 요소 조회

HGETALL member:info:1

➡ 결과:

1) "name"
2) "choi"
3) "email"
4) "choi@gmail.com"
5) "age"
6) "20"

특정 필드 값 수정

HSET member:info:1 name park

특정 필드 값 증가/감소

HINCRBY member:info:1 age 3   # age 필드 값 +3 증가
HINCRBY member:info:1 age -3  # age 필드 값 -3 감소

Redis Hash 활용: 빈번하게 변경되는 객체 값 캐싱

값을 변경하는 방법에는 2가지가 있음

1. JSON을 사용한 경우

  • JSON을 SET 하면 값을 수정할 때 전체 데이터를 변경해야 함
  • 특정 필드를 수정하려면:
    1. 전체 JSON 데이터를 가져옴
    2. 문자열을 파싱하여 원하는 값만 수정
    3. 다시 전체 JSON을 저장해야 함
  • 자주 변경되는 데이터라면 비효율적임

2. Hash를 사용한 경우

  • Hash는 내부적으로 Map 자료구조를 사용하기 때문에 특정 필드만 수정 가능
  • 값이 자주 변경되는 데이터라면 JSON 대신 Hash를 활용하는 것이 효율적임
HSET stocks:product:1 name phone stock 100 price 1250

즉, 변경이 빈번하지 않은 경우 JSON을 사용해도 되지만, 자주 변경되는 데이터라면 Hash를 사용하는 것이 최적화에 유리함


JSON 대신 Hash만 사용하면 안 될까? 🤔

완전히 Hash만 사용하면 비효율적인 경우도 있음!

1️⃣ Hash의 한계

  • 데이터 구조가 복잡하거나 여러 필드 간의 관계를 유지해야 할 때는 Hash 구조만으로는 관리하기 어려움
  • Hash는 하위 필드 검색이 불가능 → 특정 조건에 맞는 필드만 검색하는 기능이 부족함

2️⃣ JSON이 유리한 경우

  • 전체 데이터를 한 번에 저장/조회해야 하는 경우 JSON이 더 편리함
  • 예를 들어, 게시글 본문 데이터, 설정 파일처럼 자주 변경되지 않고 한 번에 읽어야 하는 데이터는 JSON이 적합함

결론:

  • 자주 변경되는 값 → Hash 사용
  • 전체 저장/조회가 필요한 데이터 → JSON 사용

Redis Hash는 특정 필드를 빠르게 수정/삭제할 수 있는 장점이 있어 유저 프로필 정보, 상품 재고 관리, 빈번한 데이터 변경이 필요한 서비스에서 효과적으로 활용 가능함!

profile
최종빈의 컴퓨터교실

0개의 댓글

관련 채용 정보