redis란 Remote Dictionary Server의 약자로, 키-값 구조의 비정형 데이터 저장관리 도구입니다.
일반적인 RDS는 테이블에 맞춰서 데이터 형태가 정해져있기 때문에, 데이터를 바꾸기 위해서는 테이블을 먼저 바꿔야하지만 redis는 비정형데이터입니다.
redis는 데이터베이스 관리시스템(DBMS)입니다.
레디스는 굉장히 독특한 데이터 처리 방법들을 가지고 있습니다,
Strings
, Lists
, Sets
, Sorted sets
, Hashes
가 가장 많이 쓰이고 근본있는 데이터 형태입니다.
대표적인 함수(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"
-> 문자열이 숫자로 계산 가능할 때는, 문자열이 숫자열로 적용됩니다.
대표적인 함수(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 _ 리스트의 길이
대표적인 함수(SADD, SMOVE, SMEMBERS, SCARD, SPOP...)
얘시)
>sadd my_set "맴버1"
1 _추가된 멤버의 숫자
>sadd my_set "맴버2""맴버3""맴버4"
3 _추가된 맴버의 숫자
>smemebers my_set
1) 맴버2
2) 맴버4
3) 맴버3
4) 맴버1
_ 특별한 순서가 적용되진 않는다.
추가를 할 때 특별한 순서가 적용되지는 않습니다. 마치 집합이라고 생각하면 좋습니다.
즉, 맴버들의 순서와 관련된 정보를 담을 수는 없습니다.
또한 똑같은 멤버를 넣는 경우 무시가 됩니다.
대표적인 함수(ZADD, ZRANGE, ZPOPMIN, ZPOPMAX...)
Sets은 특별한 순서가 적용되지 않지만 Sorted Sets은 그 반대입니다.
각각의 멤버들에게 점수를 부여하고 그 스코어에 따라 그 정보를 리턴받을 수 있습니다.
예시)
>zadd my_zset 50 "맴버1"
1 _추가된 맴버의 숫자
>zadd my_zset 100 "맴버2"
1
>zrange my_zset 0-1witchscores
1) 100 -> 맴버2
2) 50 -> 맴버1
_ 스코어에 따라 정렬된 값이 리턴된다.
대표적인 함수(HSET, HMSET, HGET, HDEL, HINCRBY...)
키가 하나인데 그 키안에 여러가지 필드가 있는 값입니다.
문자열과 형태는 똑같지만 목적이 다른 형태로, 거의 쓰이지는 않습니다.
대표적인 함수(XADD, XLEN, XRANGE, XREAD, XDEL...)
실시간 정보들을 처리하기 위해 만들어진 것이 Stremas입니다. (radis 5.0에서 추가)
예시)
> xadd my_stream * field value
15712883100-0 _ 명령 결과로 얻은 ID를 리턴
<밀리세컨즈시간>-<시퀀스넘버>