Redis 는 기본적으로 key-value 구조의 저장 방식을 갖지만 Lists,Sets, Sorted Sets, Hashes, Streams 같은 다양한 저장 방식을 제공합니다.
1. Strings
- key-value 가 일 대 일 관계입니다.
- 데이터 타입: Binary-safe strings - 알파벳, 숫자, 한글,. 이미지 등을 사용할 수 있습니다.
- 최대 길이: 512mb
2. Lists
- key-value 가 일 대 다 관계입니다.
- value 는 입력한 순서대로 저장됩니다.
- 주로 Queue -들어오는 데이터를 순서대로 처리할 때- 이나
Stack-웹브라우저의 백버튼처럼 되돌아 갈 때-으로 사용됩니다. - value 가 저장되면 key(list) 가 생성됩니다. key에 value가 하나도 없으면 해당 키는 삭제됩니다.
-> 키(리스트)의 생성과 삭제를 위한 별도의 작업이 필요 없습니다.
3. Sets
- key-value 가 일 대 다 관계입니다.
- value는 입력된 순서와 상관없이 저장되며, 중복되지 않습니다. 즉 value Banana 가 2번 저장되어도 결과적으로 하나만 남습니다.
- sets에서는 집합이라는 의미에서 vaule를 memer라 부릅니다.
- 주로 카드게임같은 게임이나 집합연산이 필요한 곳에 사용됩니다.
4. Sorted Sets
- Sorted Sets는 key 하나에 여러 개의 score와 value로 구성됩니다.
- value는 score로 sort되며 중복되지 않습니다. sore가 같으면 value로 sort됩니다.
- sorted sets에서는 집합이라는 의미에서 value를 member라 부릅니다.
5. Hashes
- 하나의 key에 여러 개의 field와 value로 구성됩니다.
- Hashes가 field와 value로 구성된다는 면에서 RDB의 table과 비슷합니다.
- Key가 PK 같은 역할을 하기에 하나의 key는 table의 한 row와 같습니다.
- table의 칼럼 수는 일반적으로 제한이 있는 반면, field 의 수는 40억개로 무제한에 가깝습니다.
- 테이블에 칼럼을 추가하려면 테이블을 변경해야 하나, Hash에서는 그런 작업이 필요 없습니다. field 추가/삭제 시 해당 key만 영향을 받습니다.
6. Stream
영향을 받습니다.
7. Pub/Sub
- 레디스는 메시지를 주고 받는 기능을 제공합니다.
- 통로로는 채널(channel)을 이용합니다. key-value의 key와 비슷한 것이라 생각하면 됩니다.
- 예를 들어 클라이언트1에서 **subscribe channel_name** 을 실행하고
클라이언트2에서 ** channel_name "Banana" **를 실행하면 클라이언트1에 "Banana"가 나옵니다. - 레디스의 pub/sub 시스템은 메시지를 보관(queuing)하지 않습니다.
** 추가 및 수정 예정 !! **
'기타' 카테고리의 다른 글
Redis - Lettuce , Redisson 의 Lock 구현 (0) | 2025.01.07 |
---|---|
회고 - Jmeter 를 활용한 성능 테스트 (0) | 2025.01.01 |
로컬 캐시(Local Cache) vs 글로벌 캐시(Global Cache) (0) | 2024.12.29 |
캐시란 무엇일까? (0) | 2024.12.23 |
동기 vs 비동기 (feat. Blocking vs Non-blocking) (2) | 2024.12.23 |