2013-04-09 3 views
1

API를 호출하여 필요한 정보를 가져 오는 제품 (PHP에서)을 만들고 있는데,이 결과를 사용 된 쿼리 문자열을 기반으로 mongodb에 저장/저장하므로 같은 쿼리 문자열의 다음 호출은 api를 다시 호출하는 대신 mongodb에서 가져옵니다.API 캐싱 및 검색

내 유일한 문제는이 예제입니다. John Doe를 검색하면 결과에서 John Michael Doe가 반환 될 수 있습니다. John Michael Doe을 다시 검색합니다. 실제로이 검색이 API를 강타하기 때문에 더 많이 검색하고 다음 번에는 John Michael Doe가 몽고에서 추방하는 검색입니다.

나는 코드를 작성하고 잡아 당기는 방법을 이해한다. 캐싱을 저장하는 이론이 필요하다. 검색된 각 쿼리 문자열을 저장하고 정확한 일치를 수행하는 mongo 테이블을 만들어야한다. 일치하는 항목을 발견하면 API를 누르십니까?

모든 도움을 주시면 대단히 감사하겠습니다.

답변

3

일반적인 방법은 md5를 사용하여 쿼리 매개 변수를 해시 한 다음 결과를 저장하는 키로 사용하는 것입니다. 누군가 다음에 쿼리를 보내면 쿼리 매개 변수를 다시 해시하고이 키가 이미 db에 있는지 확인하십시오. 그렇다면 API를 호출하지 않으면 db에서 결과를 제공합니다.

$key = md5(serialize($queryParams)); 
+0

작업이 완료 될 것 같은 소리가 나고, 이름, 성, 성 등과 함께 열쇠를 저장해야합니까? 그래서 그 값을 사용하여 키 일치 후 데이터로 실제 테이블을 검색 할 수 있습니까? –

+0

멋진 솔루션 +1 – rinchik

+0

유스 케이스가있을 경우를 대비하여 쿼리 매개 변수를 저장할 수 있습니다. md5에서 쿼리 매개 변수를 복원하는 방법은 없습니다. –