본문 바로가기
DATA/Redis

Redis data types 자료구조 유형

by bzerome240 2022. 12. 29.

 

Redis 의 장점으로는 다양한 자료구조가 있는점이다.

 

주로 사용되는 대표적인 타입: String, Set, Sorted Set, Hash, List

그외 : Bitmap, HyperLogLog, Geospatial, Stream, Bitmap, Bitfield 

 

이해하는데 도움이되는 그림

 

https://inpa.tistory.com/entry/REDIS-%F0%9F%93%9A-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%80%EC%9E%85Collection-%EC%A2%85%EB%A5%98-%EC%A0%95%EB%A6%AC

 

 

https://velog.io/@bbkyoo/Redis-%EC%A0%95%EB%A6%AC-2

 

 

Redis CLI

$ docker exec -it {Container id} redis-cli --raw

 


 

Strings

  • 단순한 insert 문을 대체하기 위해 사용한다.
  • ex) 유저의 token 저장, 이미지 저장 등

 

SET : 데이터를 저장한다.

GET : key의 값을 조회한다.

INCR : key에 저장된 수를 1씩 증가한다.

INCRBYSET : key에 지정한 수만큼 증가시킨다.

DECR : key에 저장된 수를 1씩 감소한다.

DECRBY : key에 지정한 수만큼 감소시킨다.

MSET : 여러개의 데이터를 한번에 저장한다.

MGET : 여러개의 데이터를 한번에 조회한다.

STRLEN : 키의 저장된 길이를 조회한다.

APPEND : key와 문자열이 있는 경우 문자열 뒤에 저장한다. key가 존재하지 않을 경우 새로 key를 생성한 후 문자열을 저장한다.

 

String (key - value)

$ set id 10
$ get id
$ del id
$ scan 0 // key 들을 일정 단위 개수 만큼씩 조회

 

 

Lists

linked list 구조로 돼있어서 데이터를 앞에서 넣거나 뒤에서 넣어도 소모되는 시간은 동일하다.

순차적으로 처리를 해야할 때 유용하다.

ex) job Queue, pub-sub 패턴

 

LPUSH : key에 값의 왼쪽부터 데이터를 저장하고 key가 없을 경우 새로 만든다.

RPUSH : key에 값의 오른쪽부터 데이터를 저장하고 key가 없을 경우 새로 만든다.

LRANGE : key 값의 인덱스와 last value를 지정하여 key값을 출력한다.

LPOP : key에 값의 왼쪽부터 데이터를 삭제한다.

RPOP : key에 값의 오른쪽부터 데이터를 삭제한다.

LPUSHX : key가 이미 있는 경우에만 왼쪽 부터 데이터를 저장한다.

RPUSHX : key가 이미 있는 경우에만 오른쪽 부터 데이터를 저장한다.

LINDEX : kety 값의 인덱스를 지정하여 값을 가져온다.

 

Sets

  • 순서와 상관없이 중복되지 않는 문자열의 모음
  • ex) 객체간 관계 표현, 팔로우한 유저 목록, 내가 북마크한 게시물

 

SADD : key에 member를 추가한다.

SMEMBERS : key의 member를 조회한다.

SREM : key의 member를 지정하여 삭제한다.

SCARD : key의 member 개수를 조회한다.

SDIFF : key1을 기준으로 key2 member의 차집합을 조회한다.

SDIFFSTORE : key1을 기준으로 key2 member의 차집합을 새로운 key에 저장한다.

SINTER : key1을 기준으로 key2의 member의 교집합을 조회한다.

SINTERSTORE : key1을 기준으로 key2 member의 교집합을 새로운 key에 저장한다.

SISMEMBER : key에 저장한 member가 있을 경우 1 , 없을 경우 0

SUNION : 지정한 key의 합집합을 조회한다.

SUNIONSTORE : 지정한 key의 합집합을 새로운 key에 저장한다.

 

Sorted Sets

  • 가장 많이 사용되는 자료구조
  • set과 구조는 같지만 각 member는 score를 가진다.  ---> Key - Member - Score
  • 중복되지 않는 member를 가짐
  • 기본적으로 score 값으로 오름차순 정렬됨
  • ex) 랭킹 서비스

 

ZADD : member와 score를 추가한다.

ZSCORE : member의 score를 조회한다.

ZRANK : member의 순위를 조회한다.

ZRANGE : key 값의 인덱스와 last value를 지정하여 순위를 조회한다. (기본 오름차순)

ZRANGEBYSCORE : key의 범위가 min에서 max를 지정하여 순위를 조회한다.

ZREVRANGE : key 값의 인덱스와 last value를 지정하여 순위를 조회한다. (내림차순)

ZINCRBY : key값의 member를 지정하여 score를 증가, 감소한다.

ZREM : 사용하지 않는 member를 삭제한다.

ZPOPMAX : key에서 score값이 가장 큰 member를 제거

ZPOPMIN : key에서 score값이 가장 작은 member를 제거

 

 

Hashes

  • key : value 안에 key : value 가 있는 구조 (이중 string 형태)
  • RDBMS 테이블과 비슷한 형태여서 상세 정보를 저장할 때 유용함
  • ex) 별점 처리

 

HSET : 필드와 값을 저장한다.

HGET : 필드의 값을 조회한다.

HGETALL : key의 안에 있는 필드와 값을 모두 조회한다.

HKEYS : key의 안에 필드만 조회한다.

HVALS : key의 안에 필드의 값을 조회한다.

HEXSITS : key의 필드가 있는지 확인한다. 존재하면 1 존재안하면 0

HDEL : key의 필드를 삭제한다.

HINCRBY : 필드에 값을 증가시키거나 감소시킨다.

HLEN : 필드의 개수를 조회한다.

 

Hash (key - subkey - value)

$ hgetall USER // key의 매핑되는 모든 필드와 값들 조회
$ hset USER subkey value // key의 subkey의 값을 지정
$ hget USER subkey

 

Pub/Sub

ex) 채팅 서비스, 하나의 특정 메시지를 여러 사람이 받아야할 때

 

SUBSCRIBE : 특정 채널을 구독하기

UNSUBSCRIBE : 구독중인 채널을 탈퇴하기

PUNSUBSCRIBE : 일치하는 패턴의 채널 수신을 중단하기

PUBLISH : 메시지 발행하기, subscriber client에서 해당 메시지를 전달받는다.

PUBSUB : adminstrator가 효율적으로 subscriber를 관리할 수 있도록 하는 명령어

PSUBSCRIBE : 수신할 채널 이름의 패턴 등록

 

 


 

공식 사이트

 

Redis data types

Overview of data types supported by Redis

redis.io

 

728x90
반응형

댓글