我们在 Ubuntu 13.04 上使用带有 Python 2.7 的 Django 1.4 - 尽管这个问题可能与这些信息无关。
我有一个要求,我们为我们的网站打了一个非常慢的 API。因此,我们的页面往往会在 3-6 秒之间加载。我们的数据显示,我们在 5 秒后的留存率接近 0%。因此,我正在为我们从 3rd 方 API 提取的数据实施一个 memcache 解决方案——众所周知,它每 4 小时更新一次。
我的问题涉及处理 memcache 数据集的“最佳实践”。我们通常会为任何给定的请求提取完整数据集的一部分。整个数据集大约需要 20 分钟才能拉下 - 它非常大。
如果可以的话,我想远离增加最大内存缓存单元大小 (64 MB)。为此,将数据分割成逻辑单元似乎是合理的。为了给这个问题提供动力,我应该提到最终我将对数据进行 JSON 化。举个例子:
{Layer1:
Layer2: {
Layer3: {
Layer4: {
'data1': some_data,
'data2': some_more_data,
'data3': even_more_data,
}
}
}
}
每层有多个数据段(我相信数据嵌入在 4 到 6 层之间)。
我认为存储在该Layer1
级别是一个好主意,该级别应始终低于 64 MB 限制。另一种选择是存储在单独的数据级别和密钥Layer1-Layer2-Layer3-Layer4
......不是很优雅但被证明可以在我们的系统中工作。
这个问题的目的主要是基于您对缓存信息的经验的意见目的。最终,我们的需求需要Layer1
一次包含级别数据中的信息。
如果有充分的理由放弃Layer1
级别缓存,请告诉我。
提前感谢您的意见。
编辑1:
根据 Brent Washburne 的回应,我觉得可能有必要进行详细说明。我处理一个大型系统的后端,该系统管理着 1000 个前端网页(登录页面)。每个网页都将从该数据集中请求详细信息。用户将输入搜索参数,前端必须查询数据集以获取信息以动态填充结果。
幸运的是,我们的登录页面与后端服务器位于同一 Intranet 上的服务器上 - 因此请求非常快。