이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.


Redis

Oracle, MySQL, PostgreSQL 등 RDB는 디스크에 데이터를 저장하기 떄문에 상대적으로 느리다.

하지만 NoSQL인 레디스(Redis)는 인메모리(in-memory)에 모든 데이터를 저장한다.

그래서 데이터의 처리 성능이 굉장히 빠르다.

 

NoSQL은 아래와 같이 Key와 Value 형태로 데이터를 저장하는 데이터베이스이다.

 

Redis 네이밍 컨벤션

여러가지 컨벤션이 존재하지만 콜론(:)을 이용해서 계층적으로 의미를 구분해서 사용한다는 것을 꼭 기억해야 한다.

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

 

이런식으로 컨벤션을 정했을 때의 장점은 아래와 같다.

  • 가독성 : 데이터의 의미와 용도를 쉽게 파악할 수 있다. 
  • 일관성 : 컨벤션을 따름으로써 코드의 일관성이 높아지고 유지보수가 쉬워진다. 
  • 검색 및 필터링 용이성 : 패턴 매칭을 사용해 특정 유형의 Key를 쉽게 찾을 수 있다 .
  • 확장성 : 서로 다른 Key와 이름이 겹쳐 충돌할 일이 적어진다.

 

Redis 기본 명령어

레디스 실행 및 종료

# redis 실행
brew services start redis

# redis 실행 여부 확인
brew services info redis

# reids 중지
brew services stop redis

# redis 접속
redis-cli

127.0.0.1:6379> ping
PONG # 이렇게 출력되면 정상적으로 Redis가 실행되고 있다는 뜻

 

데이터 저장

# set [key 이름] [value]
set jaeseong:name "jaeseong park" # 띄워쓰기 해서 저장하려면 쌍따옴표로 묶어주면 됨
set jaeseong:hobby soccer

 

데이터 조회

# get [key 이름]
get jaeseong:name
get jaeseong:hobby

get pjs:name # 없는 데이터를 조회할 경우 (nil)이라고 출력됨

 

저장된 모든 key 조회

keys *

 

데이터 삭제

# del [key 이름]
del jaeseong:hobby

get jaeseong:hobby # 삭제됐는 지 확인

 

데이터 저장 시 만료시간(TTL) 지정

 

레디스의 특성상 메모리 공간이 한정 되어 있기 때문에 모든 데이터를 레디스에 저장할 수 없다. 따라서 만료시간(TTL)을 활용해 자주 사용하는 데이터만 레디스에 저장해놓고 쓰는 식으로 활용한다. 

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

 

만료시간(TTL) 확인

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

 

모든 데이터 삭제

flushall

'데이터베이스 > Redis' 카테고리의 다른 글

[Redis] 캐싱 전략  (1) 2024.09.15