2012-07-24 5 views
0

무엇입니까 node LRU cache 무엇입니까? 누구든지 그것을 구현하는 방법을 설명 할 수 있습니까? 말하자면, 클라이언트 - 미드 레이어 (핸들 호출) - 백엔드 (mongoDB)의 세 가지 레이어가 있으며, LRU 캐시는 미드 레이어에 구현되어야한다고 말합니다.node-lru-cache 란 무엇입니까?

어떻게 작동하는지 보여주는 간단한 예가 있습니다. 미리 감사드립니다. https://github.com/isaacs/node-lru-cache/tree/master/test

난 당신이 LRU가 MongoDB를에 지속 할 있으리라 믿고있어 : 소스 저장소 내에서 사용하는 방법에 대한 예제가있다

+7

LRU 캐시는 최대 크기에 도달하면 데이터를 삽입 할 때 가장 최근에 사용되지 않은 항목을 제거하는 몇 가지 방법을 사용하는 단순한 모음입니다. 나는 당신의 질문의 나머지 부분에 중요한 것이 무엇인지 이해하지 않습니다. 이것은 단순히 컨테이너입니다. 그것은 캐시 서비스가 아닙니다. – Joe

답변

1

? 그렇다면 간단한 인 메모리 LRU 캐시 모듈처럼 보일 것입니다. 처음에는 라이브러리를 확장하거나 다시 작성해야합니다.

+0

예, 귀하의 가정은 정확합니다. 내 질문은 중간 계층에있는 컨테이너에있는 mongoDB의 최신 데이터 5 개를 유지하는 것입니다. LRU가 그런 일을 할 수 있습니까? 그러나 그것이 최선의 접근 방법인지 나는 모른다. – nihulus

+0

@nihulus 여러분은이 LRU 모듈이 지원하는 캐시 미스 이벤트에서이 LRU 라이브러리를 확장하는 방법을 직접 또는 그림으로 작성해야합니다. – EhevuTov

0

또한 Redis '에 대해이 설정을 고려해 보시기 바랍니다. 프론트 엔드 서버 인스턴스가 여러 개인 경우 서버 당 하나의 LRU 인스턴스를 유지하면 동기화되지 않을 수 있습니다. Redis의 정렬 된 세트는이 문제에 자연스럽게 적합하며 매우 빠릅니다.

타임 스탬프를 사용하면 가장 최근의 순서대로 정렬 할 수 있으며 목록은 트랜잭션을 통해 원자 적으로 읽고 업데이트 할 수 있습니다. 그것은 확실히 캐시의 목적에 잘 맞을 것입니다.

+0

그게 내가 처음에 가지고 있었던 해결책이야. 나는 더 복잡한 것에 대해 생각하고 있었다. – nihulus

+0

@nihulus https://github.com/mcollina/redis-command-cache에서 살펴보십시오. 그것은 lru-cache와 redis를 결합한 모듈입니다. redis pubsub를 통해 캐시 무효화 메시지를 보낼 수 있습니다. – mikegradek