본문 바로가기
  • 컴공생의 공부 일기
  • 공부보단 일기에 가까운 것 같은
  • 블로그
Club|Project/카카오테크 부트캠프 | AI

🦜카부캠 앵무말(Parrotalk) : 문맥 딕셔너리 캐시 -> Redis 고도화

by 정람지 2024. 12. 5.

집사님들이 집들이오셧다


문맥 딕셔너리 캐시를 Redis로 고도화하겠다!

DB 연결/데이터 저장이 알고 보니 백엔드 일이어서 실직했기 때문에..

그리고 아직 파인튜닝 모델 수리와 TTS 모델 개발은...안 하고 싶다


소피아언냐가 redis 도커 파일을 짜 준대

헉그게모지,,

호에엑 도커컴포즈..?

 

우선 redis에 대해 알아보자

 

딕셔너리를 고도화하는 것이기 때문에 비교


1. 데이터 영속성

  • 딕셔너리의 한계: 딕셔너리는 메모리에 저장되기 때문에 프로그램이 종료되면 데이터가 사라집니다.
  • Redis의 장점: Redis는 데이터를 디스크에 저장하거나 스냅샷을 통해 영속성을 제공합니다. 이를 통해 프로그램이 종료되거나 서버가 재부팅되어도 데이터가 유지됩니다.

2. 멀티 프로세스/멀티 클라이언트 접근 가능

  • 딕셔너리의 한계: 딕셔너리는 동일한 프로세스에서만 접근 가능합니다. 다른 프로세스나 원격 시스템이 데이터에 접근할 수 없습니다.
  • Redis의 장점: Redis는 클라이언트-서버 구조를 가지며, 네트워크를 통해 여러 프로세스와 클라이언트가 동시에 접근할 수 있습니다. 이를 통해 분산 환경에서도 데이터를 효율적으로 관리할 수 있습니다.

3. 데이터 스케일링

  • 딕셔너리의 한계: 딕셔너리는 메모리 용량에 의해 제한되며, 데이터 크기가 커질수록 단일 시스템에서 관리가 어렵습니다.
  • Redis의 장점: Redis는 클러스터링을 지원해 데이터를 여러 서버에 분산시킬 수 있습니다. 따라서 대규모 데이터를 처리하거나 저장할 때 적합합니다.

4. 고성능 읽기/쓰기

  • Redis의 장점: Redis는 메모리 기반 데이터 저장소로, 매우 빠른 읽기/쓰기 성능을 제공합니다. 특히, 딕셔너리보다 훨씬 높은 성능으로 많은 데이터를 처리할 수 있습니다.

5. 추가적인 데이터 구조 지원

  • 딕셔너리의 한계: 기본적인 키-값 구조만 지원합니다.
  • Redis의 장점: Redis는 다양한 데이터 구조를 지원합니다. 예를 들어  
    • Hashes (딕셔너리와 유사)
    • Lists (FIFO 구조)
    • Sets (집합 연산 지원)
    • Sorted Sets (정렬된 데이터)
    • Bitmaps, HyperLogLogs 등

6. 확장 가능한 기능

  • Redis의 장점: Redis는 Pub/Sub, Lua 스크립트, 트랜잭션, TTL(Time-To-Live) 등 딕셔너리로는 구현하기 어려운 기능을 제공합니다. 이를 통해 실시간 알림, 캐싱, 세션 관리 등의 고급 기능을 구현할 수 있습니다.

7. TTL 및 자동 데이터 관리

  • 딕셔너리의 한계: 특정 데이터에 유효 기간(Time-To-Live)을 설정하려면 추가 로직이 필요합니다.
  • Redis의 장점: Redis는 데이터의 TTL을 기본적으로 지원하며, 설정된 시간이 지나면 자동으로 데이터를 삭제합니다.

8. 분산 캐싱 및 세션 관리

  • Redis의 장점: Redis는 분산 캐시로 자주 사용되며, 웹 애플리케이션의 세션 데이터를 관리하기에 적합합니다. 이를 통해 데이터를 캐싱해 시스템 성능을 높일 수 있습니다.

9. 백업 및 복구

  • 딕셔너리의 한계: 별도의 파일 저장 또는 직렬화 과정이 필요합니다.
  • Redis의 장점: Redis는 스냅샷 및 AOF(Append-Only File) 방식을 통해 자동으로 백업과 복구를 지원합니다.

- 지금은 싱글 프로세스/하나의 서버여서 딕셔너리로 해도 괜찮았지만 나중에 서버가 늘어나면 여러 프로세스가 동시에 쓸 수 있어야 하기 때문에 DB 저장 필요

- 캐시 


나는 스프링 백엔듣도못하는데 

괜찮다 fastapi로

 

내일해보고

백준풀어야지