我的應用程序在做這件事時會生成很多對象。對象是由於數據庫查詢而生成的,它們是我們的ORM解決方案的一部分。使用這些對象的程序通常會逐一請求它們。需要我的asp.net mvc解決方案的緩存解決方案
我想用System.Runtime.Caching,但我不知道怎麼樣,因爲我有具體標準:
每個用戶都可以登錄到不同的數據庫。適用於所有對象。
數據庫可以有幾個不同的公司配置文件。適用於大多數物體。
大多數物體都是多語言的。
某些對象僅在數據庫事務處於活動狀態時被緩存,然後在回滾或提交時轉儲。我想到的第一個解決方案是爲緩存生成一個複雜的字符串鍵(即數據庫+公司+語言+對象主鍵值),但我不確定這是否正確。我也不確定如何實現事務範圍的緩存。
也許我會更好地控制緩存,如果我使用我自己的實現。事情是這樣的:
public class DatabaseCache
{
private ConcurrentDictionary<string, ClassCache> m_databases = new ConcurrentDictionary<string, ClassCache>();
public void Add(string database, string className, object item, params string[] itemKeys)
{
}
}
public class ClassCache
{
private ConcurrentDictionary<string, KeyCache> m_cache = new ConcurrentDictionary<string, KeyCache>();
public void Add(string className, object item, params string[] itemKeys)
{
}
}
public class KeyCache
{
private ConcurrentDictionary<string, object> m_cache = new ConcurrentDictionary<string, object>();
public void Add(object item, params string[] itemKeys)
{
}
}
您使用的是哪個ORM?有些來自您可以使用的多級緩存。 – user1450877
這是我們自己的ORM。我在7年前設計了它。 – Nezreli
那麼你正試圖解決一個非常複雜的問題,你可能知道。如果我處於你的位置,我會看看如何在其他開源ORM中實現緩存,並查看這些方法是否適用於我。 – user1450877