2012-10-23 7 views
0

내 웹 사이트에 캐싱 시스템 주입을 계획하고 있으며 다른 레이어 (데이터, 프레젠테이션 및 다른 곳에있을 수도 있음)에서 사용할 것입니다. AWS의 스택 램프 및 인프라 스트럭처의 100 % 클라우드이므로 자연 선택은 Amazon Elasticache (memcached의 관리 설치)라고 생각했습니다. 하지만 ...memcached 사용 패턴

놀랍게도 - 나를 위해 - 나는 memcached가 의존성 관리가 완전히 부족하다는 것을 발견했습니다. 나는 ASP.Net 캐시 SqlDependency 또는 FileDependency와 같은 "고급"것들을 필요로하지 않지만 memcached는 쉽게 다른 키 종속성을 제공하지 않습니다. 무효화 프로세스를 크게 단순화하는 종속성 트리를 구축하는 데는 유용합니다.

memcached가 많은 복잡한 시스템에서 사용되는 것을 알고 있으므로, 제가 누락 된 것이 있습니까? 이 부족함을 부적절하게 만드는 사용 패턴이 있습니까? 질문으로

감사

UPDATE , 나는 내가

질문 (캐시 따라서 탄성)에 memcached의 예를 바탕으로
dependency = 'ROOT_KEY'; 
cache:set(dependency, 0, NEVER_EXPIRE); 

expire = 600; 
cache:set('key1', obj1, expire, dependency); 
cache:set('key2', obj2, expire, dependency); 
... 
cache:set('keyN', objN, expire, dependency); 

//later, when I have to invalidate 
cache:remove(dependency); //this will cause all keyX to be invalidated too 
+0

응용 프로그램에서 캐시와 어떻게 상호 작용할 계획입니까? 나는 "다른 핵심 의존성"이 의미하는 것을 따르지 않을 것이라고 생각합니다. –

+0

일부 의사 코드로 질문을 업데이트했습니다. – MatteoSp

답변

0

어떤을 지원하지 않습니다 무엇을 의미하는지 명확히하기 위해 일부 의사 코드를 추가 당신이 그런 키를 관련시킬 수있는 당신이 찾고있는 것과 같은 키 메타 데이터의 종류.

다른 "종속성"이 있다면 간단히 여러 개의 탄성 캐시 인스턴스를 사용하면 각 인스턴스/종속성 내의 모든 항목을 동시에 무효화 할 수 있습니다. 이것은 물론 AWS 하드웨어 비용면에서 더 많은 비용을 들여야 할 수도 있습니다. 그러면 캐시 크기를 개별 양으로 늘릴 수 있기 때문에 원하는 것입니다. 또한 조회를 수행 할 종속성/인스턴스를 모른 채로 캐시 조회를 수행 할 수있는 기능이 제거됩니다.

실용적인 out-of-the-box 유형의 솔루션을 더 많이 찾고 있다면 MySQL/RDS의 메모리 테이블과 같은 것을 사용할 수 있습니다. 물론 디스크에 쓰기가 필요하기 때문에 RDS 고 가용성 기능이나 특정 시점 복원을 사용하지 않으려 고합니다. 기본적으로 독립 실행 형 RDS 인스턴스는 이러한 메모리 테이블 외에는 수행하지 않아도됩니다.

그러나 실제로는이 옵션 중 아무 것도 보이지 않는 것 같습니다. 따라서 기본 AWS 구성 요소를 사용하려는 경우 접근 방식을 조정하거나 대체 AWS 구성 요소를 배치해야합니다. EC2의 캐싱 시스템