2017-09-26 120 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客戶端會收到有關服務器上數據更改的通知,並在數據更改時更新緩存(並通知其偵聽器)。這就是我所說的「保持最新」。 –