2017-09-26 93 views
1

在下面的代码: -Firebase侦听器在哪里侦听RAM或磁盘?

String FirebaseRefer = Constants.Client + "/" + Constants.firebaseProjects + "/" + Constants.name + "/xyz"; 
DatabaseReference agendaRef = FirebaseDatabase.getInstance().getReference(FirebaseRefer); 
agendaRef.keepSynced(true);  

agendaRef.addListenerForSingleValueEvent(new com.google.firebase.database.ValueEventListener() { 

    @Override 
    public void onDataChange(com.google.firebase.database.DataSnapshot snapshot) { 

哪里的火力听者听?它是RAM中的还是磁盘中的Firebase数据?

回答

0

当我们谈论听众时,实际上我们谈论的是您在特定时间内执行的读取/写入操作次数,您每秒执行的读取/写入次数,因为每个disk的最大数量为I/O(输入/输出操作)每秒。谈到Firebase时,Firebase数据库并没有什么不同。因此,要回答您的问题,Firebase听众listen on the disk

有一件事要记住,在共享基础设施上工作,IOPS的数量不能保证。

3

Firebase数据库客户端会保留您在应用程序内存中收听的所有数据的副本。一旦你删除了某个位置的最后一个监听者,数据将从内存中删除。由于您致电agendaRef.keepSynced(true),这意味着agendaRef的所有数据都会保存在内存中,并保持最新状态。

如果你enable persistence客户端也将持续活动和最近的数据到磁盘。

+0

保持最新意味着什么? –

+0

如果我们不启用持久性,那么这是否意味着每次需要从远程Firebase获取数据?一般来说,从磁盘或远程Firebase中的本地Firebase获取的数据是什么?如果始终从远程Firebase那里将它存储到磁盘有什么用处? –

+1

当您有一个活动侦听器(或者在节点上调用了'keepSynced(true)')时,Firebase客户端会收到有关服务器上数据更改的通知,并在数据更改时更新缓存(并通知其侦听器)。这就是我所说的“保持最新”。 –