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