2014-02-15 57 views
2

所以基本上,我试图决定是否应该去专用的内存缓存。专用memcache vs共享内存缓存(python,谷歌appengine)

我的场景如下: 我正在为一些公共数据提供实时分析的应用程序。 我将保持总共15kb的键/值memcache(20个键,变量值) 同时值不断变化(总共键/值大约每20秒更新20次) 点击到网站将执行这些键的请求(也围绕每3秒的请求)

我假设10000用户立即击中网站,这将产生约20 * 10000每3秒的请求。

考虑到memcache的大小(相对较小),而且产生的请求数量大约为7000 /秒(memcache键/值访问),专用memcache将成为更多的“风险厌恶”交易。 谢谢,

+0

即使您使用专用的内存缓存,由于无法控制的因素,仍然可能会遇到缓存驱逐问题。只要您的应用程序可以从缓存未命中运行/恢复,为什么不将它与共享缓存进行配置,然后就缓存的使用寿命与成本之间的关系做出明智的决定。 –

+0

目前正在使用它,但我主要关心的是高流量vs memcache访问 – abad

回答

1

使用此数据大小,您将不会从使用专用的内存缓存中获得任何好处。

访问内存缓存的速率与此决定无关。

+0

@Martin我目前在所有情况下都增强了我的memcache持久性。同时引起我注意的是以下性能提及:性能高达每秒每秒10k次操作(项目<1KB)[专用内存缓存](https://developers.google.com/appengine/docs/adminconsole/memcache),每秒10k操作数不应该描述对memcache的访问速率? (或者这可能只是写在这种情况下?)。 – abad

+0

所以基本上,虽然专用的memcache更可靠,但对于小型memcache <1 MB,我可以实现持久性机制,不断检查我的memcache的健康状况并提供足够的响应(即使在非常高的通信环境下)。 – abad

2

缓存数据似乎对您的Web应用程序的正确操作至关重要。如果您丢失了数据,可能会对成千上万的用户造成伤害!希望您的应用程序还会定期保存缓存的数据并自动从缓存擦除中恢复。

虽然数据量很小,但共享内存缓存比专用内存缓存在不可预知的时间驱逐部分或全部数据的风险更大。该设计还必须正确处理部分数据丢失。不仅您的内存压力,而且来自其他应用程序和云操作因素的压力都可能导致AppEngine丢弃共享缓存。