好了,我想我这里有一个很基本的疑问:

我开发的GAE(Java)的一个应用程序,并返回大量数据存储执行查询 实体的,所以我需要进行缓存。我用的是内存缓存,它是伟大的工作,但如果我保持在一个静态变量的实体名单,整个请求都按两倍,比使用内存缓存一样快。我想这是因为我不反序列化实体的所有时间。

什么是使用静态变量,而不是在内存缓存的缺点?我不知道是否有可能是我在云应用程序的多个实例,和我的静态变量这样几种情况?

实体我试图缓存的列表是上周最佳(分值越大)的职位。我采取这一清单,并选择5发随机的帖子,并将其显示在几个页面。

感谢您的帮助!

有帮助吗?

解决方案

App Engine的鳞片通过创建应用程序的用户打它增加的一些新的实例。作为drudru说,不同的用户可以通过不同的情况下提供服务。在一般情况下,内存缓存是存储你想成为全球一致的东西最快的地方。然而,在您的情况下可能有一些改进的余地。

您提到您的职位名单,你随机选择5展现给用户。不要紧,如果2个不同的用户看到不同的5?如果你选择反正那些随意,也许这并不重要。然后,你可以存储在内存缓存职位的完整列表,并拉出5级随机的了内存缓存,并把它们存储在一个静态变量。

二,究竟是你memcaching,以及如何你拉出来?你储存了一大堆的内存缓存满的职位,让他们所有,然后选择5?也许你可以只下载帖子列表中,选择5,只得到5你需要什么?如果你认为这是一个的放慢你失望的反序列化,这可能帮助。你的帖子做任何处理你之后呢?如果是这样,可以说处理的结果被缓存?

其他提示

您不能依靠静态变量(或任何JVM内存否则)当一个请求命中,因为谷歌是免费的启动和停止虚拟机时,他们觉得这是四周。从外观上来看,他们似乎更愿意启动额外的JVM,而不是额外的线程在同一个JVM,该化合物这个问题。

但是,你应该能够使用静态变量作为缓存层,只要你有办法,如果它走了,从其他地方加载数据。

我也不会尝试与内存使用过分去那里,一定有你可以使用多少内存配额。

呀,也不能保证您的实例将成为互联网上的各种用户相同。你可能最终会不断地读入静态这在最坏的情况下。内存缓存有被提供更高的保障。我只想用的内存缓存,并且您的应用程序不应该有在未来的任何规模的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top