Stands for
Redis는 Remote Dictionary Server의 약어이다.
In-Memory DataBase
Redis는 데이터를 메모리에 저장하고 조회한다. 즉 In-Memory DataBase이다. 데이터를 메모리에 저장하고 사용하기 때문에 이는 HDD와 RAM의 차이를 알고 있다면 명확하게 속도가 빠르다는 것을 의미하는 것을 알 수 있다.
하지만 RAM을 사용하기 때문에 당연히 용량 문제가 있고 데이터 저장을 위한 DB로 사용하기에는 무리가 있다. 즉 Redis as a Cache 그러니까 Redis는 주로 Cache DB Server 라고 생각하자.
NoSQL
DataBase라고 표현되어있기 떄문에 SQL을 써야되는건가 싶지만 그렇진 않고 Key-Value 구조로 데이터를 관리하기 떄문에 별도의 SQL 없이(NoSQL) 데이터를 Read & Write 할 수 있다.
하지만 Redis Enterprise에서는 지원된다고 한다..
Single Thread
Single Thread 방식이며 연산을 Atomic으로 수행하기 때문에 Redis는 Thread Safe 하다. 하지만 Atomic 연산이기 떄문에 중간에 처리 시간이 긴 요청이 들어오면 그 뒤에 들어온 요청들은 앞에 있는 요청이 처리될 때까지 대기한다.
Memory ?
Memory를 사용한다고 했으니 Memory를 사용할 경우 무엇이 문제인지 알아보자. 만약 Memory가 부족한 상황이 온다면 어떨까?
잠깐 운영체제 이론을 생각해보자. 운영체제에서 Swap이라는 개념이 기억나는가? 이는 Memory가 부족할 때 부족한 공간을 위해 HDD에 Swap용 공간을 만들어 임시 저장하는 개념이다.
즉 Memory와 HDD간 데이터를 주고 받을 때 Latency가 발생하는데 Redis의 경우 jmalloc을 사용하기 때문에 내부 단편화가 발생 한다.page size를 4096byte로 잡으면 1byte의 데이터만 저장해도 4096byte 단위로 할당한다.
그러므로 유사한 크기의 데이터를 사용해서 막도록 해보자.
Redis Settings
redis 실습 용도로 docker를 이용할 경우 다음 명령을 이용하자.
# redis
$ sudo docker run --name myredis -d -p 6479:6479 redis
# redis-cli 실행하기
$ sudo docker run -it --link myredis:redis --rm redis redis-cli -h redis
'Server > Redis' 카테고리의 다른 글
Redis, Collections - Sorted Set (0) | 2022.12.03 |
---|---|
Redis, Collections - Hashes (0) | 2022.11.27 |
Redis, Collection - Sets (0) | 2022.11.27 |
Redis, Collection - Lists (0) | 2022.11.27 |
Redis, Collection - Strings (0) | 2022.11.27 |