Google App Engine 上的 Guava 缓存
Google Guava Cache On App Engine
有谁知道是否有任何理由不在 Google App Engine 上使用 Google 番石榴缓存库。
https://code.google.com/p/guava-libraries/wiki/CachesExplained
特别是使用逐出侦听器。我担心的是缓存不会跨实例复制。
用例将因此创建缓存:
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.removalListener(MY_LISTENER)
.build();
在 post 上到一个 http servlet,使用稍后 post 的缓存,并采取一些删除操作。我担心 App Engine 处理缓存的方式存在一些细微差别,以及如何在 App Engine 文档中没有提及使用驱逐侦听器:https://cloud.google.com/appengine/docs/java/memcache/ 与它在 Guava 文档中的完成方式。
更新:
从一些测试看来 google 番石榴缓存在 GAE 上不起作用 - 缓存在事务结束时被逐出(30 秒左右)
提前致谢。
问题在于此缓存存储在本地内存中,请记住,GAE 实例一直在创建和销毁,因此无法保证来自用户的请求由同一实例提供服务。
除非您可以使用共享资源(如内存缓存或数据存储)备份此缓存,否则您就不走运了。
有谁知道是否有任何理由不在 Google App Engine 上使用 Google 番石榴缓存库。
https://code.google.com/p/guava-libraries/wiki/CachesExplained
特别是使用逐出侦听器。我担心的是缓存不会跨实例复制。
用例将因此创建缓存:
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.removalListener(MY_LISTENER)
.build();
在 post 上到一个 http servlet,使用稍后 post 的缓存,并采取一些删除操作。我担心 App Engine 处理缓存的方式存在一些细微差别,以及如何在 App Engine 文档中没有提及使用驱逐侦听器:https://cloud.google.com/appengine/docs/java/memcache/ 与它在 Guava 文档中的完成方式。
更新:
从一些测试看来 google 番石榴缓存在 GAE 上不起作用 - 缓存在事务结束时被逐出(30 秒左右)
提前致谢。
问题在于此缓存存储在本地内存中,请记住,GAE 实例一直在创建和销毁,因此无法保证来自用户的请求由同一实例提供服务。
除非您可以使用共享资源(如内存缓存或数据存储)备份此缓存,否则您就不走运了。