gpt4 book ai didi

java - Google App Engine 的 Memcache (Java) 是全局缓存吗?

转载 作者:太空狗 更新时间:2023-10-29 22:55:28 25 4
gpt4 key购买 nike

我是 Google App Engine 的新手,最近几天我一直在使用 GAE 的 Memcache 来构建一个应用程序来存储数据。根据我的初步发现,似乎 GAE 的 Memcache 不是全局的?

让我进一步解释。我知道对 GAE 的不同请求可能由不同的实例提供服务(事实上这似乎经常发生)。正是出于这个原因,我使用 Memcache 来存储一些共享数据,而不是静态映射。我认为(也许是错误的)这就是使用分布式缓存的意义所在,这样数据就可以被任何节点访问。

另一种确定的可能性是我做错了什么。我已经尝试过 JCache 和低级 Memcache API(我正在编写 Java,而不是 Python)。这就是我正在做的事情来检索缓存:

MemcacheService cache = MemcacheServiceFactory.getMemcacheService();

部署后,这是我检查的内容(通过我的应用程序日志):

  1. 初始请求由特定节点提供服务,数据存储在上面检索到的缓存中。
  2. 新的几个请求检索相同的缓存并且数据就在那里。
  3. 当生成一个新节点来服务请求时(从日志中我知道这种情况何时发生,因为 GAE 记录了“此请求导致为您的应用程序启动一个新进程......”的事实),检索缓存并且是空的!!

现在我也知道无法保证数据在 Memcache 中的存储时间,但根据我的发现,当 diff 实例尝试访问缓存时,数据似乎消失了。这似乎违背了分布式全局缓存的整个概念,不是吗?

希望有人能准确说明这应该如何表现。如果 Memcache 不是全局的并且每个服务器实例都有自己的副本,那么为什么还要使用 Memcache?我可以简单地使用静态 HashMap(我最初是这样做的,直到我意识到它不会是全局的,因为不同的实例服务于我的请求)。

帮助?

最佳答案

是的,Memcache在您应用的所有实例之间共享。

关于java - Google App Engine 的 Memcache (Java) 是全局缓存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com