Firebase函数:支持跨函数的全局变量

时间:2018-10-07 10:53:01

标签: firebase caching firebase-realtime-database google-cloud-functions

我想在http firebase函数中缓存最近的记录(例如最近24小时)。 在http firebase函数(例如fetchLastXRecords)中,如果找不到从数据库中获取并设置缓存,我会在缓存中查找记录(定义了Global变量以存储记录)。

当我想更新任何缓存记录时会出现问题,因为其他Firebase函数无法访问此Global变量(可能是实时数据库更改触发器)。

什么是更新缓存中记录的好方法?可以调用缓存http firebase函数并传递更新的记录吗?还是可以将更新的记录存储在数据库中,以后的缓存功能可以在数据库中查找并更新缓存记录?

1 个答案:

答案 0 :(得分:2)

在Cloud Functions中,您无法确保代码中的全局变量可供您的函数访问。关于云功能如何工作,您需要了解两件事:

  1. 在负载下,将分配多个服务器实例来运行您的功能。这些服务器实例不共享任何状态。
  2. 每个功能都部署到不同的服务器实例。两个功能永远不会在同一服务器实例上运行。

因此,如果要在函数之间共享任何值,则应使用持久性机制,例如数据库。当您的函数需要读取和写入共享值时,它们应该访问数据库。另外,他们应该使用某种原子事务来确保多个并发读取和写入是安全的。