2013-04-09 43 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