Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将对象存储在firebase云函数RAM中?_Firebase_Firebase Realtime Database_Google Cloud Platform_Google Cloud Functions - Fatal编程技术网

如何将对象存储在firebase云函数RAM中?

如何将对象存储在firebase云函数RAM中?,firebase,firebase-realtime-database,google-cloud-platform,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Platform,Google Cloud Functions,在处理用户请求之前,我的应用程序需要构建两个大型哈希映射。理想情况下,我希望将这些hashmap存储在机器的内存中,这意味着它不必进行任何昂贵的处理,并且可以快速处理任何传入的请求 但这对firebase不起作用,因为用户有可能触发一个新实例,从而启动非常耗时的预处理步骤 因此,我尝试将我的应用程序设计为使用firebase数据库,每次只从数据库中获取它需要的数据,而不是将所有数据保存在内存中。但是,由于云功能正在从数据库下载大量数据,我现在已经触发了本月超过1.7GB的下载,这是我自己测试的结

在处理用户请求之前,我的应用程序需要构建两个大型哈希映射。理想情况下,我希望将这些hashmap存储在机器的内存中,这意味着它不必进行任何昂贵的处理,并且可以快速处理任何传入的请求

但这对firebase不起作用,因为用户有可能触发一个新实例,从而启动非常耗时的预处理步骤

因此,我尝试将我的应用程序设计为使用firebase数据库,每次只从数据库中获取它需要的数据,而不是将所有数据保存在内存中。但是,由于云功能正在从数据库下载大量数据,我现在已经触发了本月超过1.7GB的下载,这是我自己测试的结果。这超出了限额


一定有什么我错过了;我想要的只是一些hashmaps的永久内存存储。我所希望的是,当通过请求调用函数时,这些hashmap就准备好了。这似乎是一个如此简单的要求;为什么没有办法做到这一点

如果您想在运行云功能的容器中存储数据,可以使用,它实际上保存在内存中。但当容器被回收时,这种情况就会消失,而当你的函数有一段时间没有被访问时,这种情况就会发生。因此,每当容器启动时,都必须重建本地文件系统


<>如果要永久存储所生成的值,请考虑使用谷歌云存储。这可能是一个更具成本效益的选择,也是最具扩展性的选择。

谢谢您的回答。我确实尝试过使用云存储,实际上,我用它来存放一堆CSV,我将它们读入/tmp目录,然后将它们转换成hashmap。问题是,正如你提到的,当容器被重置时,它必须重新进行,对吗?我不明白云存储如何避免这种情况,因为我仍然需要将数据读入服务器以将其处理为哈希映射。我最终意识到,我的代码之所以如此缓慢,是因为它在声明之前在云函数之外运行(我不知道为什么会变慢)。一旦我把它放到云函数中,它就会运行得非常快。问题是,如果我必须在每次请求时重新下载整个数据库来构建hashmaps,这是一个非常不可持续的解决方案,因为我将很快耗尽存储带宽。肯定有更好的办法吗?很高兴听到你找到了。如果没有看到重现问题的代码,我无法评论任何更好的方法。这就是为什么我只解释了这个系统是如何工作的。谢谢,我没有最少的代码,因为我的问题更多的是为什么我需要为这样一个简单的需求设定配额。另一个澄清:我认为我的请求应该非常合理的原因是,我可以通过在代码中声明整个80MB的hashmaps数据来完成它。也许我会编写一个脚本,枚举js中的所有字段,并将其放在index.js本身中?这样它就不必从任何地方下载,也不会产生任何配额。然而,对于一个看似简单的问题来说,这似乎是一个非常绝望的解决方案。你在一天内问了三次相同的问题。我建议坚持一个问题,并在更多数据被披露时更新它和参与评论。回答这个问题-如果向Firebase添加数据导致你的应用每次下载大量数据,你可能做错了。childAdded事件在这些情况下很有用。该事件仅向应用程序显示新添加的数据,然后您可以将这些数据集成到内存数据集中。投票结束,因为这是一个多余的问题。此外,如果您使用singleEvent实现一个观察器,那么您的数据将只下载一次,不再下载。即使在Firebase中添加、更改或删除数据,应用程序也不会收到事件,直到下次运行并调用singleEvent。