Google app engine 应用程序引擎和创建专用缓存(java)
我知道appengine有memcache构建它。我正在使用objectify,所以我所要做的就是添加一个注释来使用它 我看到了memcache解决方案的一个缺点,那就是谷歌拥有控制权。如果他们想在服务器上释放一些内存来提供另一个实例,那么他们可以清空我的缓存,我必须付费重新填充Google app engine 应用程序引擎和创建专用缓存(java),google-app-engine,Google App Engine,我知道appengine有memcache构建它。我正在使用objectify,所以我所要做的就是添加一个注释来使用它 我看到了memcache解决方案的一个缺点,那就是谷歌拥有控制权。如果他们想在服务器上释放一些内存来提供另一个实例,那么他们可以清空我的缓存,我必须付费重新填充 出于这个原因,我想知道如何创建自己的缓存作为objectify实体实例的hashmap,但我有两个问题,我很难找到相关信息 如何监控实例的内存使用情况,以确保不会太接近128mb的限制 我理解objectify在mem
出于这个原因,我想知道如何创建自己的缓存作为objectify实体实例的hashmap,但我有两个问题,我很难找到相关信息
我假设这是针对google应用程序引擎-python的 对。我们正在使用目前正在生产中的cachepy,并取得了不错的成功 请注意,这是一种特定于实例的缓存机制 因此,您可以使用cachepy对每个实例进行缓存,并在分发到数据存储之前将其作为备用项缓存到memcache 因此,当cachepy上发生缓存未命中时,您可以查找memcache,当memcache上发生缓存未命中时,您也可以回过头来从数据存储中获取它 为了监视使用情况,您可以这样做(尽管我不确定它是否会像我在gae中所希望的那样工作) 关于cachepy上的set函数
您可以使用sys.getsizeof添加检查以查看缓存的大小,并抛出一个
MemoryError
或类似的东西。注意,还有专用的memcache,这可能是一个更简单的解决方案
但是为了确保不超过内存限制,您可能可以使用类似于Ehcache的东西并配置一个限制
至于你的第二个问题:据我所知,Objectify的行为是这样的,以便在部署新版本时更好地处理序列化和反序列化,并且类可能会有轻微的更改。当您在自己的实例上进行自己的缓存时,您不会遇到这个问题。但是,从多个实例中逐出旧项总是很棘手的,所以要小心。创建我自己的缓存作为objectfify实体的哈希映射?你是说实例缓存吗?@Bharath是的,缓存对象的实例。抱歉,这不是很清楚。应用程序引擎请求将选择随机实例。因此,这将为您的实例添加权重。你准备好了吗?@Bharath我知道memcache可以跨应用程序实例工作,而我的缓存只能在创建它的应用程序实例中工作。但在我看来,使用备用内存进行第二次缓存并没有任何危害或成本。如果需要,Memcache仍然可以依靠。除非我有什么误会,你完全对了。但是如果你需要从地图上删除一些项目,可能会有一些问题。我使用的是Java,但是很高兴知道已经存在一些解决方案,所以这是可能的。