簡體   English   中英

Infinispan 8-cache.clear()-如何正確理解javadoc?

[英]Infinispan 8 - cache.clear() - How to understand the javadoc correctly?

在infinispan 8.2.5.Final中,我有一個用例,我想從緩存中逐出/清除所有條目。 我正在調用cache.clear()。 Javadoc說:

無效的org.infinispan.Cache.clear()

從緩存中刪除所有映射。

注意:除非可以保證不會同時運行其他調用,否則在生產環境中永遠不要調用此方法。

如果緩存是事務性的,它將不會與事務交互。

指定者:Map中的clear()

這是否意味着“沒有其他對cache.clear()的調用”? 還是意味着“根本沒有其他任何對底層緩存的調用”? 因此,沒有cache.put和cache.get同時存在嗎?

它是清除高速緩存(新數據傳入)的常見用例。 我使用了錯誤的方法嗎? 還有其他方法可以從infinispan緩存中逐出所有項目嗎?

編輯:我正在無效模式下運行我的緩存。 clear()操作是否會使所有節點或僅本地節點中的所有條目無效?

這意味着“不能運行其他寫操作”。 由於clear()不會嘗試獲取任何鎖定,因此它可能會破壞並發寫入操作(可以在某些節點中應用,但在另一個節點中可能缺少)。

如果您擔心並發寫入,則可以使用stream()iterator() 舉個例子:

cache.keySet().stream().forEach(BasicCache::remove);

要么

for (Iterator<K> it = cache.keySet().iterator(); it.hasNext(); ) {
    it.next();
    it.remove();
}

應該可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM