JAVA
Redis
kkumtree
2023. 7. 21. 11:26
솔루션의 고도화를 진행하면서 redis에 대한 얘기가 나왔다.
도대체 redis란 무엇인가?
Key, Value구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리시스템(DBMS)이라고 한다.
데이터베이스, 캐시, 메시지 브로커로 사용되며 인메모리 데이터구조를 가진 저장소라고 한다.
DB가 있는데 redis를 사용하는 이유?
DB는 물리 디스크에 데이터를 직접 저장하기 때문에 서버가 다운되더라도 데이터의 손실이 발생하지 않는다. 그치만 매번 디스크에 접근해야하기 때문에 사용자가 많아질수록 부하가 많이 발생할 수 밖에없고 이는 결국 속도의 저하를 야기한다.
그래서 사용자가 늘어나면 캐시 서버를 도입하여 데이터베이스의 과부하를 줄일 수 있다.
(캐시는 처음 읽어온 데이터를 임의의 공간에 저장해 다음 번에는 캐시에 저장된 결과값을 반환할 수 있도록 도와준다.)
redis의 특징?
1. Key, Value 구조를 사용하므로 쿼리를 사용할 필요가 없다.
2. 디스크가 아닌 메모리에서 데이터를 처리하기에 속도가 빠름.
3. String, Lists, Sets, Sorted Sets, Hashes 자료구조를 지원한다.
4. Single Threaded다.
한 번에 하나의 명령만 처리할 수 있다 = 처리시간이 긴 명령어가 들어오면 뒷 명령어들은 앞 명령어가 처리될때까지 기다려야한다. (하지만 get, set 명령어의 경우 초당 10만 개 이상 처리할 수 있을정도로 빠르다고 한다.)