본문 바로가기

Back-End/Redis

Redis란?(feat. 기본 명령어와 Key 네이밍 컨벤션)

Redis란?

레디스(Redis)는 Remote Dictionary Server의 약자로서, “키-값” 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)이다.
- 위키백과 -

쉽게 말해서 Redis는 데이터 속도가 빠른 NoSQL 데이터 베이스이다. (NoSQL 데이터는 key-value 구조의 DB이다)

[Redis의 장점]
Redis의 장점은 많지만 그 중 1개를 뽑자면 Redis는 In-Memory에 모든 데이터를 저장할 수 있어 데이터 처리 성능이 굉장히 빠르다.
MySQL과 같은 DB는 디스크를 사용하지만 Redis는 RAM을 사용하기 때문에 데이터 처리 속도가 빠르다.

[Redis의 주요 사용 사례]

  • 캐싱 (Caching)
  • 세션 관리 (Session Management)
  • 실시간 분석 및 통계 (Real-time Analystics)
  • 메시지 큐 (Message Queue)
  • 지리공간 인덱싱 (Geospatial Indexing)
  • 속도 제한 (Rate Limiting)
  • 실시간 채팅 및 메시징 (Real-time Chat And Messaging)

Redis 기본 명령어 익히기

[데이터(key, value) 저장하기]

# set [key 이름] [value]
$ set byeong:name "byoungcheon park"
$ set byeong:hobby game

[데이터 조회하기(Key로 Value 값 조회하기)]

# get [key 이름]
$ get byeong:name
$ get byeong:hobby

# 없는 데이터를 조회할 경우 nil 이라고 출력된다.

[저장된 모든 Key 조회하기]

$ keys *

[데이터 삭제하기 (key로 데이터 삭제하기)]

# del [key 이름]
$ del byeong:hobby

$ get byeong:hobby #삭제 됐는지 확인

[데이터 저장 시 만료시간(TTL) 정하기]

레디스는 RDBMS와는 다르게 데이터 저장 시 만료시간을 설정할 수 있다. 즉 영구적으로 데이터를 저장하지 않고 일정 시간이 되면 데이터가 삭제되도록 셋팅할 수 있다.
레디스의 특성상 메모리 공간이 한정 되어있기 때문에 모든 데이터를 레디스에 저장할 수 없다. 따라서 만료시간(TTL)을 활용해 자주 사용하는 데이터만 레디스에 저장해놓고 쓰는 식으로 활용한다.

# set [key 이름] [value] ex[만료시간(초)]
$ set byeong:pet dog ex 30

[만료시간(TTL) 확인하기]

# ttl [key dlfma]
# 만료 시간이 몇 초 남았는 지 반환
# 키가 없는 경우 -2를 반환
# 키는 존재하지만 만료 시간이 설정돼 있지 않은 경우에는 -1을 반환

$ ttl byeong:pet # 만료시간 얼마 남았는지 나옴
$ ttl byeong:name # -1 반환
$ ttl park:hobby # -2 반환

[모든 데이터 삭제하기]

$ flushall

Redis에서 Key 네이밍 컨벤션

회사마다 여러가지 컨벤션이 존재하겠지만 딱 한가지만 기억하자!!
콜론(:)을 활용해 계층적으로 의미를 구분해서 사용!

Ex)

  • users:100:profile : 사용자들(users) 중에서 PK가 100인 사용자의 프로필(profile)
  • products:123:details : 상품들(products) 중에서 PK가 123인 상품의 세부사항(details)

[컨벤션의 장점]

가독성, 일관성, 검색 및 필터링 용이성, 확장성