You will be fine

<Redis> 0. Redis와 Data Types

by BFine
반응형

가. Redis 란

 a. 무엇인가

  -  Key-Value DB를 지원하는 인메모리 기반의 오픈소스 데이터 저장소이다.

  -  주로 캐시로 많이 사용하고 메세지 브로커나 스트리밍 엔진으로 사용할 수도 있다.

      => 업무에서는 Redis에 데이터가 있으면 가져오고 Miss 발생시에는 DB로부터 가져와서 Redis에 저장하는 방법을 사용하고 있다 (Look-aside)

 

나. Data Type

 a. Strings

  -  기본 데이터 타입으로 시퀀셜한 byte를 저장하는 구조이다. (종류로는 단순 텍스트, 직렬화된 객체 등 )

     => Key와 Value는 일대일이다. (기본적으로 하나의 value는 최대 512MB까지만 가능)

  -  대부분 캐시로 사용하지만 카운터나 비트 연산으로도 사용할 수 있다.

     => 카운터는 64 비트까지 지원한다.

 

 b. Lists

  -  하나의 key에 여러 value를 저장할 수 있는 자료구조이다. (Linked list 형태로  최대 2^32 -1개까지 저장 가능하다.)

     =>  주로 Queue, Stack으로 사용한다.

  -  유의할 점은 lindex, linsert, lset 같이 List를 순회하는 명령어인 경우 O(N) 을 가지기 때문에 크기가 큰 List 일 경우에는 주의해야한다.

 

 c. Set

  -  하나의 key에 유니크한 member(value)들을 저장할 수 있는 자료구조이다. (순서는 보장하지 않는다.)

    => members는 최대 2^32 -1개까지 가능하다.

  -  유의할 점은 smembers & sdiff O(N), sinter O(N *M) 을 가지기 때문에 member가 많은 경우에는 주의해야한다.

    => 특히 smembers 대신 sscan을 이용해서 member를 탐색하는 것이 좋다. (수십만개라고 레퍼런스에는 나와있는데 그 이하라도 안쓰는게 좋을 것 같다.)

 

 d. Sorted Set

   -  하나의 key에 유니크한 member(value)들을 score를 지정하여 정렬 할 수 있는 자료구조이다. 

      => score에 따른 순위 결정이나 Rate Limiter로 활용 할 수 있다. (score가 동일할 경우 사전 순으로 정렬)

   -  유의할 점은 zrange O( log(N[멤버수]) + M[범위 개수] )을 가지기 때문에 member가 많은 경우(수만개)에는 주의해야한다.

 

 e. hash

   -  하나의 key에 여러 field와 value를 저장할 수 있는 자료구조이다. (최대 2^32 -1개까지 저장 가능하다.)

   -  유의할 점은 hmget, hgetall, hkeys, hvals 등은 O(N) 을 가지기 때문에 필드가 많을 경우에는 주의해야한다.

반응형

'공부 > Redis' 카테고리의 다른 글

<Redis> 2. 아키텍쳐  (0) 2022.09.03
<Redis> 1. 트랜잭션  (0) 2022.08.16

블로그의 정보

57개월 BackEnd

BFine

활동하기