Remote Dictionary Server의 약자로, 다수의 서버가 공유하는 해시 테이블
모든 데이터를 메모리에 저장하고 조회하는 인메모리 데이터베이스(In-memory DB)이며, Key-Value 구조의 비관계형(NoSQL) 데이터베이스 관리 시스템이다.
별도의 쿼리문이 필요하지 않고, 디스크가 아닌 메모리 기반의 데이터 저장소이기 때문에 데이터에 접근하는 속도가 빠르지만, 휘발성이라는 것에 유의해야 한다.
데이터베이스가 존재하는데도 Redis라는 인메모리 DB를 사용하는 이유는 무엇일까?
데이터베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생하더라도 데이터가 손실되지 않는다.
하지만 매번 디스크에 접근해야하기 때문에 사용자가 많아질수록 부하가 많아져서 느려질 수 있다. 일반적으로 서비스 운영 초반이거나 규모가 작고, 사용자가 많지 않은 서비스의 경우 WEB - WAS - DB의 구조로도 데이터베이스에 무리가 가지 않는다.
하지만 사용자가 늘어난다면 데이터베이스에 과부하가 걸릴 수 있기 때문에 캐시 서버를 사용하는 것이며, 이 캐시 서버로 사용할 수 있는 것이 바로 Redis 이다.
한번 읽어온 데이터를 캐시에 저장하기 때문에, 같은 요청이 여러 번 들어오는 경우 데이터베이스에 접근하기 전에 캐시에서 응답해주므로 DB의 부하를 줄이고 속도를 높여준다.
Key-Value 구조. -> 쿼리를 사용할 필요가 없다.String, List, Set, Sorted Set, Hash의 데이터 형식을 지원한다.Single Threaded라서 한 번에 하나의 명령만 처리할 수 있다.Redis는 데이터의 휘발성을 보완하기 위해 데이터에 영속성을 제공한다. 즉, 메모리에 있는 데이터를 디스크에 백업하는 기능을 제공한다.
일부 데이터 손실에 영향을 받지 않는 경우(캐시로만 사용할 때)에 사용한다.
장애 상황 직전까지의 모든 데이터가 보장되어야 할 경우 사용한다.
Redis는 일반적으로 RDB와 AOF를 동시에 사용하여 데이터를 백업한다.
방문자 수 조회 (String)
인증 토큰 저장 (String 또는 Hash)
게임 등의 랭킹 보드 (Sorted Set)
휴먼유저 개인정보 삭제 (Sorted Set)
이메일 인증 기능
참고문헌
https://wildeveloperetrain.tistory.com/21
https://velog.io/@banggeunho/레디스Redis-알고-쓰자.-정의-저장방식-아키텍처-자료구조-유효-기간
https://velog.io/@dodozee/Redis
https://velog.io/@j3beom/SpringBoot-Redis-Redis를-활용한-Caching-기본-및-활용-예제
https://ksh-coding.tistory.com/154#1-2.%20Strings%20%ED%99%9C%EC%9A%A9%20%EC%98%88%EC%8B%9C-1