2016-10-17 2 views
0

최대 6 백만 자릿수의 base36 문자열을 보유하고 다음 동작을하는 영구 캐시가 필요합니다. - 클라이언트가 캐시에서 N 개의 문자열을 검색하면 클라이언트는 base36 값의 순서로 검색됩니다. AAAAAA 다음 AAAAAB 등 - 문자열을 검색하면 캐시에서 제거되므로 다른 클라이언트가 동일한 문자열을받지 않습니다.순서화 된 영구 캐시

현재 영구 캐시로 MapDB를 사용하고 있습니다 (EHCache를 사용하지만 영구 저장 장치에 대한 라이센스가 필요함).

MapDB는 나에게 요소를 넣거나 가져올 수있는 맵을 제공하며 디스크에 지속성을 처리합니다.

자바의 ConcurrentSkipListMap 클래스가 내 문제를 해결하는 데 도움이되는 것으로 나타났습니다. 순서를 따라 검색/제거하려면 pollFirstEntry 메서드를 호출 할 수도 있습니다.

나는 이것을 어떻게 MapDB와 함께 사용할 수 있을지 모르겠다. 누구나 내가 윤곽을 말한 행동을 달성하도록 도울 수있는 조언이 있습니까?

감사

답변

1

당신이 대부분의 사람들이 캐시를 고려할 것 같은 소리하지 않습니다 설명하고 있습니다. 캐시는 본질적으로 값으로 매핑되는 키가있는 공유 된 맵이며 캐시에서 가장 많이 사용되는 항목을 포함하기를 원하기 때문에 읽기에는 제거하지 않을 것입니다.

설명하는 것 (순서가 정해진 순서대로 클라이언트가 소비하는 일련의 항목)은 작업 대기열과 훨씬 비슷합니다. 캐시 솔루션을 보는 대신 RabbitMQ, Kafka, bigqueue 등의 영구 대기열을 사용해보십시오.

관련 문제