Play !, play.api.Cache
은 싱글 톤 개체이므로 다른 모든 개체에서 전역 적으로 액세스 할 수 있습니다. 그리고 캐시의 특성상 캐시는 변경 가능한 개체입니다. 이와 같이 전역 가변 상태는 일반적으로 매우 문제가 있습니다.Play!를 사용하는 동안 키 충돌을 피하는 방법! 개체 캐시?
특히 키 충돌의 잠재적 인 문제가 있습니다. 다른 두 클래스 (서로 느슨하게 결합 된 클래스)는 실수로 동일한 키를 사용하여 값을 저장할 수 있습니다. 그런 다음 업데이트 중 하나가 다른 업데이트에 의해 무시됩니다.
이 문제에 대한 가능한 해결책 중 하나는 글로벌 클래스 Cache
에 위임 할 수 있지만 키에 일종의 "네임 스페이스"를 추가하는 새로운 클래스를 만드는 것입니다. 구현하기가 어렵지는 않지만이 문제에 대한 표준 솔루션이 이미있는 경우 (Play! 자체에서 구현하는 것이 바람직 함) 더 좋을 것입니다. 있어요?
+1하지만 키 이름을 아직 지정하지 않았습니까? 나는 일반적으로 문제의 도메인 + 사용자 ID, 타임 스탬프 등의 다른 고유 한 식별자 뒤에 캐시 키 이름을 지정합니다. 캐시를 지우는 것은 키 접두사로 캐시를 지우는 방법, 더 큰 걱정입니까? 그것은 매우 유용 할 것입니다. – virtualeyes
그냥 제안 : 나는 항상 캐시 키에 대한 컨벤션을 유지하려고 해요 : classname.methodname.additionalparams.moreadds 그것은 화려한 해결책은 아니지만 조금 도움이됩니다. BTW는 여전히 Ehcache'indexes /'search API'를 좀 더 자세히 들여다 볼 시간이 없기 때문에 충돌을 피할 수 있습니다. – biesior