簡體   English   中英

Infinispan 失效緩存在新密鑰上失效

[英]Infinispan invalidation cache invalidates on new key

我們有一個帶有 infinispan (v 9.4.18) 失效緩存的兩個主動/主動節點 Wildfly 19 集群配置。

<invalidation-cache name="opencell-tenant-cache">
    <transaction locking="OPTIMISTIC" mode="NONE"/>
</invalidation-cache>

根據 infinispan 文檔,當節點 1 上的緩存值更改時,會從節點 1 向節點 2 發送 InvalidateCommand,從而使節點 2 緩存中的鍵條目無效/刪除。

我注意到的是 InvalidateCommand 甚至在一個新的密鑰上發送。

在我們的應用程序中,如果在緩存中找不到鍵,則會從數據庫中加載一個值並放入緩存中。 由於兩台服務器都處於活動狀態,我得到以下永無止境的場景:

對節點 1 的請求 > 在節點 1 緩存上找不到密鑰 > 從數據庫加載值並放入節點 1 緩存 > 在節點 2 上無效的密鑰
對節點 2 的請求 > 在節點 2 緩存上找不到密鑰 > 從數據庫加載值並放入節點 2 緩存 > 節點 1 上的密鑰無效
對節點 1 的請求 > 在節點 1 緩存上找不到密鑰 > 從數據庫加載值並放入節點 1 緩存 > 節點 2 上的密鑰無效
等等。

在這種情況下,我會不斷地使緩存失效,即使數據從未更改過。 我希望在新的密鑰放置上不會發送無效命令。

否則失效緩存的實際用途是什么,如果在接收到失效命令后放置相同的鍵將再次觸發失效。

謝謝

I would expect that no invalidation command is send on new key put. 什么是新看跌期權?

Request to Node 2 > Key not found on Node2 cache <- 在您的示例中,節點 2 在本地沒有密鑰; 所以這是一個新的看跌期權。

如果您配置ClusterLoader ,節點 2 可以從節點 2 獲取密鑰。 請參閱無效緩存模式文檔

如果失效不適合您的數據訪問,請查看其他緩存模式(如復制/分布式)。

暫無
暫無

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

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