# Cacheable - Keyv 기반 Node.js용 캐싱 패키지

> Clean Markdown view of GeekNews topic #17767. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17767](https://news.hada.io/topic?id=17767)
- GeekNews Markdown: [https://news.hada.io/topic/17767.md](https://news.hada.io/topic/17767.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-11-15T09:33:01+09:00
- Updated: 2024-11-15T09:33:01+09:00
- Original source: [github.com/jaredwray](https://github.com/jaredwray/cacheable)
- Points: 13
- Comments: 1

## Summary

Cacheable은 Keyv 저장 엔진을 기반으로 한 고성능 레이어 1 및 레이어 2 캐싱 엔진으로, 간단하고 직관적인 API를 통해 데이터를 캐시하고 검색할 수 있으며, LRU 및 만료 캐시를 지원합니다. 이 패키지는 오류 복구 및 오프라인 지원을 통해 장애에 강한 구조를 제공하며, 동기 및 비동기 함수에 대한 Wrap/Memoization과 기능 확장을 위한 Hooks 및 이벤트 처리를 지원합니다. Pub/Sub 기반의 분산 캐싱 동기화 기능을 곧 출시할 예정이며, ESM 및 CommonJS를 지원하고 Typescript와 호환됩니다.

## Topic Body

다양한 프로젝트에서 사용가능한 캐싱 솔루션 패키지  
- cacheable : 차세대 캐싱 프레임워크. 레이어 1 / 레이어 2 캐싱을 처음부터 설계하여 구축. 분산 캐싱 및 확장성에 강점  
- cache-manager : NestJS와 같은 서비스에서 사용되며, wrap 등 강력한 기능 제공. 다양한 애플리케이션에서 널리 사용  
- cacheable-request : 네이티브 HTTP 요청에 캐시 기능 추가. RFC 준수 캐시 지원. 네트워크 요청에 캐시를 쉽게 적용 가능  
- flat-cache : 파일 저장소 지속성을 가진 빠른 메모리 캐싱. 메모리에 빠르게 접근하면서도 파일에 캐시 데이터 저장 가능  
- file-entry-cache : 파일 메타데이터에 대한 경량 캐시. 특정 파일 세트를 처리하는 프로세스에 적합, 마지막 실행 이후 변경된 파일만 재처리  
- @cacheable/node-cache : node-cache 대체 패키지  
  
### Cacheable  
- 분산 캐싱에 중점을 둔 고성능 레이어 1 / 레이어 2 캐싱 엔진  
- CacheSync와 같은 엔터프라이즈 기능 지원 예정  
- Keyv 저장 엔진을 기반으로 하여 견고한 성능 제공  
- 간단한 API로 데이터를 캐시하고 검색하는 기능  
- 주요 특징  
  - 간단하고 직관적인 API 제공  
  - 불필요한 모듈 없이 가벼운 구조  
  - Keyv로 신뢰할 수 있는 확장 가능한 저장 엔진 사용  
  - LRU(Least Recently Used) 및 만료 캐시를 지원하는 Memory Caching  
  - 오류 복구 및 오프라인 지원을 통해 장애에 강한 구조  
  - 동기 및 비동기 함수에 대한 Wrap / Memoization 지원  
  - 기능을 확장할 수 있는 Hooks 및 이벤트 처리 지원  
  - TTL(시간 제한) 설정을 밀리초 단위로 간단하게 적용 (1분 = 60000ms, 1시간 = 3600000ms, 1일 = 86400000ms)  
  - 비차단(non-blocking) 레이어 2 캐싱 연산 지원  
  - Pub/Sub 기반의 분산 캐싱 동기화 (곧 출시 예정)  
  - 종합적인 테스트 및 코드 커버리지  
  - ESM 및 CommonJS 지원, Typescript와 호환

## Comments



### Comment 31414

- Author: sunrabbit
- Created: 2024-11-18T10:42:17+09:00
- Points: 1

그냥 패키지 내부에서 primary, secondary로 레이어 나눈 뒤에 keyv에다가 저장하는식이네요  
고전적 의미의 레이어 1 / 레이어 2 캐싱을 기대하셨던 분은 뒤로가기 누르시면 됩니다.
