[英]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.