Redis란???
레디스(Redis)는 Remote Dictionary Server의 약자로 Remote에 있는 In-Memory 데이터 구조를 가진 키 - 값 구조 데이터 관리 시스템이라고 할 수 있다. 레디스는 메모리(RAM)에 데이터를 저장하기 때문에 용량이 적고 데이터를 빠르게 가져올 수 있다.
레디스를 요약하자면 키 - 값 저장소로 여러가지 자료구조를 지원하는 NoSQL이라고 할 수 있다.
Redis의 특징
- 속도가 매우 빠르다.
- 메모리에만 저장하지않고 파일로도 저장하므로 저장된 시점으로 복구가 가능하다.
- 엘라스틱서치와 같이 샤딩을 지원하므로 데이터를 분산해서 저장이 가능하다.
- 만료시간을 설정하지 않으면 데이터 영구보존이 가능하다.
- 다양한 자료구조를 지원한다.
Redis의 자료구조
- String : 단순한 키 - 값의 1:1 구조이다.
- List : 순서가 있는 String의 묶음이다, array형식의 데이터 구조이다.
- Sets : 순서가 없는 String의 묶음이다, 중복되지 않는 array형식의 데이터 구조이다.
- Sorted Set : Sets와 마찬가지로 순서가 없는 String의 묶음이지만 score를 통해 순위를 매겨 정렬이 가능하다.
- Hash : 키 내부에 키 - 값이 존재하는 자료구조
이미지 출처 : https://steady-coding.tistory.com/586
Redis의 패턴
Cache-Aside 패턴(빠른검색용)
- 검색시 Redis에서 먼저 찾고 검색내용이 있다면 보여주고 없다면 데이터베이스 또는 엘라스틱에서 찾은 뒤 보여주고 그 내용을 Redis에 저장한다.
- 두 번째 검색부터는 Redis에 저장된 정보를 보여주기 때문에 속도가 빠르다.
Write-Back 패턴(임시저장용)
- Redis에 먼저 임시저장을 해놓은 뒤 데이터베이스에 저장한다.
- 데이터베이스에 저장해야하는 데이터 양이 매우 많으면 디스크I/O가 발생하므로 Write-Back패턴을 사용한다.
참고한 사이트 :
https://blog.dalso.org/article/redis
https://pearlluck.tistory.com/724
https://steady-coding.tistory.com/586