[Redis] Redis기초

youngseo·2022년 12월 23일
0

AWS

목록 보기
4/4

redis(Remote Dictionary Server)

redis란 Remote Dictionary Server의 약자로, 키-값 구조의 비정형 데이터 저장관리 도구입니다.

  1. key-value형태로 이루어져있다.
  2. 비정형 데이터이다.

일반적인 RDS는 테이블에 맞춰서 데이터 형태가 정해져있기 때문에, 데이터를 바꾸기 위해서는 테이블을 먼저 바꿔야하지만 redis는 비정형데이터입니다.

redis는 데이터베이스 관리시스템(DBMS)입니다.

1. redis의 특징

  1. 맵(Map)데이터 저장소
    • 무한한 키밸류 형태의 테이블
  2. 인-메모리 데이터베이스
    • 원래는 휘발성으로 데이터베이스를 위한 인메모리로 잡아서, db를 도와주는 역할로 많이 쓰였습니다.
    • 지금은 radis의 데이터들을 영구적으로 저장하는 기능들이 추가가 되었습니다.
    • 인메모리란, 컴퓨터안에 데이터가 렘에 잡혀있는 것으로 값을 수백만건에서 가져오는 것이 아니라 바로 앞에 가져다놓고 꺼내오는 느낌입니다.
      (단, 레디스를 끄게 되면 가져다놓은 모든 데이터는 사라지게 됩니다.)
  3. 영속성(Persistence)보장 기능
    • 원래는 레디스가 인메모리기 때문에 데이터가 휘발성으로 날아가는 것이 정상이지만, AFO, snapshot과 같은 기능을 통해 데이터를 찍어 보관할 수 있도록 개선되었습니다.

2. Collection 알아보기

레디스는 굉장히 독특한 데이터 처리 방법들을 가지고 있습니다,

Strings, Lists, Sets, Sorted sets, Hashes가 가장 많이 쓰이고 근본있는 데이터 형태입니다.

2-1 Strings

대표적인 함수(SET, GET, INCR, INCRBY, DECR, DECRBY,,,)

레디스에서의 Strings은 ""안에 숫자를 넣으면 숫자로 인식하며 Strings이 됩니다.

예시)

> set my_number 10
OK
> get my_number
"10"
> incr my_number
(integer) 11
> get my_number
"11"
> dear my_number
(interger) 9
> get my_number
"9"

-> 문자열이 숫자로 계산 가능할 때는, 문자열이 숫자열로 적용됩니다.

2-2 Lists

대표적인 함수(LPUSH, RPOP, LPOP, RPUSH, LRAGNG...)

여기서 starting index에 영향을 미치는 경우 L, last index에 영향을 미치는 경우 R로 표기합니다.
(LRAGNG의 경우 특정인덱스부터 특정인덱스까지의 값을 get하는 것을 의미)

예시)

>lpush my_list 10
1 _ 리스트의 길이
>lpush my_list 20
2 _ 리스트의 길이
>lrange my_list 0-1
0) 20
1) 10
>lpush my_list 30 40
4 _ 리스트의 길이

2-3 Sets

대표적인 함수(SADD, SMOVE, SMEMBERS, SCARD, SPOP...)

  • SADD : 집합에 member를 추가
  • SREM : 집합에서 member를 삭제

얘시)

>sadd my_set "맴버1"
1 _추가된 멤버의 숫자
>sadd my_set "맴버2""맴버3""맴버4"
3 _추가된 맴버의 숫자
>smemebers my_set
1) 맴버2
2) 맴버4
3) 맴버3
4) 맴버1
_ 특별한 순서가 적용되진 않는다.

추가를 할 때 특별한 순서가 적용되지는 않습니다. 마치 집합이라고 생각하면 좋습니다.
즉, 맴버들의 순서와 관련된 정보를 담을 수는 없습니다.

또한 똑같은 멤버를 넣는 경우 무시가 됩니다.

2-4 Sorted Sets(ZSets)

대표적인 함수(ZADD, ZRANGE, ZPOPMIN, ZPOPMAX...)

Sets은 특별한 순서가 적용되지 않지만 Sorted Sets은 그 반대입니다.
각각의 멤버들에게 점수를 부여하고 그 스코어에 따라 그 정보를 리턴받을 수 있습니다.

  • ZADD: 집합에 score와 member를 추가
  • ZCARD: 집합에 속한 member의 갯수를 조회

예시)

>zadd my_zset 50 "맴버1"
1 _추가된 맴버의 숫자
>zadd my_zset 100 "맴버2"
1
>zrange my_zset 0-1witchscores
1) 100 -> 맴버2
2) 50 -> 맴버1
_ 스코어에 따라 정렬된 값이 리턴된다.

2-5 Hashes

대표적인 함수(HSET, HMSET, HGET, HDEL, HINCRBY...)

  • HSET: Field와 Value를 저장
  • Hashes와 Table의 유사점
    • RDS의 테이블과 매우 유사합니다.
  • Hashes와 Table의 차이점
    • 해시 데이터의 필드는 최대 40억개
    • 테이블은 데이터를 변경하기 위해선 먼저 테이블을 변경해야합니다.
    • 해시는 즉시 필드의 삭제 수정이 가능

키가 하나인데 그 키안에 여러가지 필드가 있는 값입니다.

2-6 Bitmaps와 Hyperloglogs

문자열과 형태는 똑같지만 목적이 다른 형태로, 거의 쓰이지는 않습니다.

2-7 Streams

대표적인 함수(XADD, XLEN, XRANGE, XREAD, XDEL...)

실시간 정보들을 처리하기 위해 만들어진 것이 Stremas입니다. (radis 5.0에서 추가)

예시)

> xadd my_stream * field value
15712883100-0 _ 명령 결과로 얻은 ID를 리턴
<밀리세컨즈시간>-<시퀀스넘버>
  • *를 사용하면 현재의 시각을 리턴합니다.
  • 또한 그 시간에 대해서 필드와 시간을 저장합니다.

0개의 댓글