2015-01-12 5 views
1

매번 데이터 저장소에서 복잡한 쿼리를 작성하지 않도록 메서드의 결과를 캐싱합니다 (서명과 함께). 내 캐싱이 완벽하게 작동합니다.최대한 캐싱 악용

내 질문은 :

가 어떻게 캐시의 항목에 대한 타임 아웃의 최적 값을 찾아야한다 ?

캐시의 최적 항목 수는 얼마입니까?

응용 프로그램의 성능을 향상시키기 위해 변경할 수있는 다른 변수는 있습니까?

캐싱 성능에 영향을 미치는 다양한 요인을 가정하고 캐시를 최적화하는 방법을 이해하는 데 도움이되는 공식을 얻으시겠습니까?

답변

1

There are two hard problems in computer science: cache invalidation and naming things. 우선, 캐시가 필요합니다. 그것은 당신이 사용하고있는 데이터 저장소의 종류 (redis, 명백하게)에 달려 있습니다. 기존의 RDBMS라면 색인 생성 전략을 먼저 단단히해야합니다. 캐싱을 도입하는 데 따르는 문제는 어느 시점에서, 나중에는 아니고 조만간, 그리고 그 이후로는 일관성없는 캐시를 얻게된다는 것입니다. 캐시 무효화는 데이터 저장소에 대한 업데이트가 필요하지 않으므로 무언가가 무효화 메시지를 발생 시키지만 대상에 도달하지 못하고 캐시가 만료됩니다. 그래서 소개하기 전에 캐싱이 필요하다는 것을 확실히 확인하십시오. 캐시 타임 아웃의 관점에서 볼 때, 빠를수록 좋습니다. 1 시간은 매우 좋습니다. 무언가가 동기화되지 않으면 문제가 계속 발생하지 않고 스스로 해결됩니다. 또한 캐시 시간 제한을 1 주 이상 설정하면 캐시가 데이터 저장소처럼 작동하기 시작합니다. 작동이 멈추고 재 구축해야한다면 성능이 크게 떨어질 것입니다. 따라서이 경우에는 더 적습니다. 마지막으로, 캐시에 들어가는 모든 것에 대해 캐시 시간 초과를 실제로 설정하고 실제로 설정했는지 확인하십시오. Memcache를 사용하면 기본적으로 만료일을 지정하기가 너무 쉽습니다.이 경우 캐시가 실제로 데이터 저장소처럼 작동하기 시작할 것입니다. 그렇게하지 마십시오. 나는 거기에 있었고 당신의 사이트가 회복하기 위해 일주일을 기다리는 것은 재미 있지 않다.