[Redis] Redis 타입 및 명령어 모음

RyECODING·2024년 8월 18일

MSA

목록 보기
4/15
  • Redis 철학 : Simple is BEST
  • <명령어> <key> ~~~ 형태

✅ String

SET user:email ex@example.com
GET user:email`

✔️ INCR, DECR : ++, --

  • 정수가 문자열로 저장된 경우
SET user:count 1
GET user:count
INCR user:count
GET user:count

✔️ MSET : 여러개의 키값을 한번에 저장 -> Multi Set

✔️ MGET : 여러개의 키값을 한번에 조회 -> Multi Get

MSET user:name alex user:email alex@example.com
MGET user:name user:email
  • 문자열 -> toCharArray() toByteArray()
  • 문자열 데이터 -> 이미지, 영상, 음성, 파일, HTML 등 모든 데이터를 저장 가능. 최대 512MB까지 저장 가능

✅ List : Linked List 구조로 데이터를 저장하는 자료구조

  • 스택, 큐 형태로 가장 많이 사용

✔️ Push(삽입), Pop(제거)-> 왼쪽이냐 오른쪽이냐 -> Lpush, Rpush, Lpop, Rpop

LPUSH user:list alex
RPUSH user:list chad
LPUSH user:list john
RPUSH user:list jake
- John, Alex, Chad, Jake 순서로 저장됨
LPOP user:list
- John
RPOP user:list
- Jake
  • GET은 사용 불가 -> GET은 문자열만 가능
  • Key에 저장된 자료형이 다를 경우 오류 발생!!!

✔️ LLEN : List의 길이를 조회

✔️ LRANGE : 설정한 인덱스 내의 데이터 조회

LLEN user:list
- 2
LRANGE user:list 0 3
- Alex, Chad
  • 2번째(오른쪽) 인덱스에 리스트 길이보다 더 큰 숫자가 들어가도 ㄱㅊ
LRANGE user:list 0 100000
LRANGE user:list 0 -1
  • -1 : 마지막 인덱스 (뒤에서 첫번째)
    LRANGE user:list 0 -2
  • -2 : 뒤에서 두번째
  • enc < start = 빈 리스트
LRANGE user:list 1 0
- 빈 리스트

ex)

  • Worker Queue : 여러 Worker Application에게 일을 분배하기 위해
  • Timeline : X (구 트위터)의 타임라인

✅ Set : 집합 자료구조 (문자열의)

  • 중복을 허용하지 않음
  • 순서가 없음

✔️ SADD : Set에 데이터 추가

SADD user:java alex
SADD user:java brad
SADD user:java chad

✔️ SREM : Set에서 데이터 제거

SREM user:java alex

✔️ SISMEMBER : Set에 저장된 데이터 존재 확인 true/false

SISMEMBER user:java brad

✔️ SMEMBERS : Set에 저장된 모든 데이터 조회

SMEMBERS user:java

✔️ SCARD : Set에 저장된 데이터의 개수 조회

SCARD user:java

✅ 교집합 합집합

SADD user:python alex
SADD user:python dave
SADD user:java alex

✔️ SINTER : 교집합

SINTER user:java user:python
- alex

✔️ SUNION : 합집합

SUNION user:java user:python
- alex, brad, chad, dave

✔️ SINTERCARD : 교집합의 원소의 갯수

SINTERCARD 2 user:java user:python
- 2 : 뒤에 나올 키의 갯수

특징 및 사용 예

  • 중복을 허용하지 않는 방문자 수 세기
  • URL을 키로 만들고 사용자 ID를 넣어준다.
  • 인증 토큰 블랙리스트
  • SISMEMBER : O(1) -> 빠름

✅ Hash : Key-Value 구조로 데이터를 저장하는 자료구조

  • FIELD - Value pair

✔️ HSET : Hash에 데이터 삽입

HSET user:alex name alex age 25
HSET user:alex major CSE
HGET user:alex name
HGET user:alex age

✔️ HGETALL : Hash에 저장된 모든 데이터 조회

HMGET user:alex age major

✔️ HGETALL : Hash에 저장된 모든 데이터 조회

HGETALL user:alex

✔️ HKEYS : key만 조회

HKEYS user:alex

✔️ HLEN : Hash의 길이 조회 (필드 갯수)

HLEN user:alex

✅ Sorted Set : Set과 유사하지만 순서가 있음

  • 정렬된 집합 : 중복되지 않는 데이터 + 점수

✔️ ZADD : Sorted Set에 데이터 추가

  • ZADD key score value
ZADD user:ranks 10 alex
ZADD user:ranks 9 brad 11 chad
ZADD user:ranks 8 dave
ZADD user:ranks 9.5 eric

✔️ ZINCRBY : Sorted Set의 데이터 점수 증가

ZINCRBY user:ranks 2 alex

✔️ ZRANK : Sorted Set에서 데이터의 순위 조회

ZRANK user:ranks alex

✔️ ZREVRANK : Sorted Set에서 데이터의 역순위 조회

ZREVRANK user:ranks alex

✔️ ZRANGE : Sorted Set에서 특정 구간의 데이터 조회

ZRANGE user:ranks 0 3

✔️ ZREVRANGE : Sorted Set에서 특정 구간의 데이터 조회 (역순)

ZREVRANGE user:ranks 0 3
  • 이미 있는 데이터에 ZADD 시 점수만 업데이트 됨
ZADD user:ranks 10 alex

ex) 순위표(리더보드), Rate Limeter (과도한 요청 거부)


✅ 자료형과 상관없이

✔️ DEL: Key 삭제

SET somekey "to be deleted"
DEL somekey
DEL user:list
DEL user:python
DEL user:alex

✔️ EXPIRE : 만료시간 설정

SET expirekey "To be expired"
EXPIRE expirekey 50
- 50초 후에 expirekey 삭제

✔️ EXPIRETIME : 만료시간 조회

  • UNIX timestamp로 만료시간 반환. 만료시간이 없으면 -1 반환
EXPIRETIME expirekey

✔️ KEYS : Key 검색

KEYS user:*
*: 와일드카드

✔️ FLUSHDB : 데이터베이스 초기화

FLUSHDB
profile
례코드

0개의 댓글