有谁知道是否有任何理由不在 Google App Engine 上使用 Google Guava Cache 库。
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();
在发布到 http servlet 时,将缓存用于以后的发布,并在删除时采取一些操作。我担心应用程序引擎处理缓存的方式存在一些细微差别,以及应用程序引擎文档中没有提及使用逐出监听器:https://cloud.google.com/appengine/docs/java/memcache/与 Guava 文档中的完成方式相比。
更新:
从一些测试看来,google guava 缓存在 GAE 上不起作用 - 并且缓存在事务结束时(30 秒左右)被逐出
提前致谢。
最佳答案
问题在于,该缓存存储在本地内存中,请记住,GAE 实例一直在创建和销毁,并且不能保证来自用户的请求由同一实例提供服务。
除非您可以使用共享资源(例如内存缓存或数据存储)备份此缓存,否则您就不走运了。
关于java - App Engine 上的 Google Guava 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29633271/