2012-09-17 62 views
-1

我有4個應用程序在名爲「Infocenter」的數據庫上使用相同的數據。 (所以有NHibernate的4個實例< =>一個應用程序)NHibernate的多實例

我知道Hibernate使用兩個緩存(級別1和級別2)。 我認爲緩存優化了數據庫訪問的次數。但是,我使用4個應用程序,所以4個緩存。 我不確定,但是如果application1更新其緩存,那麼application2可能會使用舊數據。 所以我想知道是否必須禁用nhibernate緩存(和其他東西)。

在此先感謝。

鮑比魚

+2

你到目前爲止嘗試過和考慮過什麼?這些方法的任何具體問題? – Jeroen

+0

感謝您的回覆Jeroen。 我想知道: - 如果我必須取消激活nhibernate緩存(級別1和2)? - 如果我必須使用特殊配置來避免併發問題(會話和事務)。 (對不起,我的英語) – BobyFish

+1

增加的信息是偉大的 - 一些配置的例子,你的考慮也將有所幫助。請注意,在SO上,您始終可以編輯您的問題以改進它們,事實上它(a)非常感謝,並且(b)會提出您的問題,以便重新引起注意。 (至於英文,只要你嘗試這個應該是很好的 - 而且經常有足夠的其他用戶將芯片和編輯你的問題,以改善它。) – Jeroen

回答

1

如果因此目前存儲在應用2的緩存,並且您正在使用的SysCacheProvider(或過程緩存中的任何),那麼應用2將不會拿起該數據已經改變,你的應用程序1的變化數據可能會丟失數據或在您的應用中做出錯誤的決定。

你有多種選擇:

  1. 您可以使用分佈式緩存就像memcached的(這就是我推薦),並在使用相同的緩存
  2. 你可以看一下所有4個應用程序使用SysCache2提供商和設置SqlDependencies
  3. 您可以關閉二級緩存

我已經使用memcached的場景中像這樣很多年了,一直曲對它感到滿意。

+0

感謝您的結構化的響應。 它完全包含我想知道的內容。 – BobyFish