2013-04-09 44 views
1

我正在創建一個產品(在PHP中),它調用api來提取需要的信息,我想根據所使用的查詢字符串將這些結果緩存/保存到mongodb中,以便下一次調用相同的查詢字符串時會從mongodb中拉取而不是再次調用api。API緩存和搜索

我唯一的問題就是試圖確保我覆蓋的是這個例子:搜索John Doe可能會返回John Michael Doe的結果,再次搜索John Michael Doe我實際上希望此搜索能夠打到api,因爲它鑽取更多,下一次約翰邁克爾多伊正在尋找從蒙戈拉。

我明白如何編寫代碼,並使拉等等,我只需要關於存儲緩存的理論,我應該在mongo中創建一個表來保存每個搜索到的查詢字符串並進行完全匹配,如果它不' t找到任何匹配點擊api?

非常感謝所有幫助。

回答

3

我認爲一種常見做法是使用md5對查詢參數進行哈希處理,然後將其用作存儲結果的關鍵字。下次有人發送查詢時,再次散列查詢參數並檢查數據庫中是否已存在此密鑰。如果是,你可以從數據庫中得到結果,如果你沒有調用API的話。

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

聽起來像這樣會完成工作,我應該保存鑰匙,名字,中間名,姓氏等?這樣我可以使用這些值在密鑰匹配後用數據搜索實際表格? – 2013-04-09 18:07:33

+0

不錯的解決方案+1 – rinchik 2013-04-09 18:10:44

+0

您可以保存查詢參數,以防您有用例查詢它們。無法從md5恢復查詢參數。 – 2013-04-09 18:15:33