: NoSQL의 key-value DataBase 중 하나로서 문자열, 리스트, 해시 등 다양한 데이터를 지원한다.
- 특징
- 싱글스레드로 동작하며 다양한 자료구조를 지원
⇒ 개발의 편의성 증가, 난도 감소, 다양한 기능 구현 가능
- ex) 데이터 정렬의 속도
- DBMS
느림 ( ∵ DB에 데이터를 저장하고 저장된 데이터를 정렬하여 다시 읽어오는 과정은 디스크에 직접 접근이 필요 ) - Redis
빠르고 간단 ( ∵ Sorted-Set이라는 자료구조를 사용 )
- DBMS
- ex) 데이터 정렬의 속도
- 모든 데이터를 메모리에 저장하고 조회하는 인메모리 데이터베이스로서 영속성을 지원함
⇒ 서버가 내려가더라도 DISK에 저장된 데이터를 읽어서 메모리에 로딩함- 데이터를 DISK에 저장하는 방식
- RDB(Snapshotting. 스냅샷팅) 방식
순간적으로 메모리에 있는 내용을 DISK에 전체를 옮겨 담음 - AOF (Append On File) 방식
Redis의 모든 write/update 연산 자체를 모두 log 파일에 기록
- RDB(Snapshotting. 스냅샷팅) 방식
- 데이터를 DISK에 저장하는 방식
- 싱글스레드로 동작하며 다양한 자료구조를 지원
- 자바와의 연관관계 - JAVA의 Redis Client
세션 관리나 캐싱에 자주 사용된다.- Jedis
- 초기에 많이 사용
- 단점
- 멀티 쓰레드에서의 불안정
- Thread-Pool의 연결 인스턴스 수와 연결비용 증가에 따른 한계
- Spring Boot 2.0부터 기본 클라이언트에서 deprecated
⇒ 별도의 의존성 필요
- Lecttuce
- 장점
- Netty 기반으로써 비동기 지원 가능
- Thread-safe 멀티 쓰레드 수와 관계 없이 연결 인스턴스를 여러 쓰레드에서 공유 가능
- Spring Boot 2.0부터 기본 클라이언트에 탑재
⇒ 별도의 설정 없이 사용 가능
- 장점
- Jedis
- Redis VS Memcached
Redis Memcached 저장소 In Memory Storage 저장 방식 Key-Value 데이터 타입 String, Set, Sorted Set, Hash, List String 데이터 저장 Memory, Disk Only Memory 메모리 재사용 메모리 재사용 하지 않음
(명시적으로만 데이터 삭제 가능)메모리 부족 시,
LRU 알고리즘을 이용하여
데이터 삭제 후 메모리 재사용스레드 Single Thread Multi Thread 캐싱 용량 Key, Value 모두 512MB Key name 250 byte, Value 1MB