我們正在爲ASP.NET MVC3應用程序使用memcache。爲Web應用程序緩存設計模式
我想知道人們用來管理數據的推薦設計模式或庫,因爲會有這麼多密鑰會生成,因此管理它可能會有點痛苦,並找出哪些數據變得骯髒以及如何處理刷新數據,以便我們在緩存中擁有乾淨的數據副本,並且我們的數據完整性在那裏,並且不會進入髒緩存。
感謝 Saarthak
我們正在爲ASP.NET MVC3應用程序使用memcache。爲Web應用程序緩存設計模式
我想知道人們用來管理數據的推薦設計模式或庫,因爲會有這麼多密鑰會生成,因此管理它可能會有點痛苦,並找出哪些數據變得骯髒以及如何處理刷新數據,以便我們在緩存中擁有乾淨的數據副本,並且我們的數據完整性在那裏,並且不會進入髒緩存。
感謝 Saarthak
這是有關緩存的文章在MVC 3大serieas:http://dotnetslackers.com/articles/aspnet/Cache-Exploration-in-ASP-NET-MVC-3-Part-1.aspx
感謝分享0lukasz0但這不是我所期待的。 – saarthak
我不知道如果我真的讓你的問題,但是這是我用它來管理memcached的接入方式和鑰匙 首先我還想說,這可能不是最好的辦法,因爲我是新來緩存
public class City { String name; }
public interface CityRepository
{
City GetCityById(Int32 id);
}
public class SqlCityRepository : CityRepository
{
public City GetCityById(Int32 id)
{
//SQL CODE
return null;
}
}
public class MemcachedRepository : CityRepository
{
public CityRepository repository { get; set; }
public MemcachedRepository(CityRepository repository)
{
this.repository = repository;
}
public City GetCityById(Int32 id)
{
//IF(CHECK_IF_KEY_IS_PRESENT_AT_MEMCACHED)
// RETURN CACHED_VALUE(KEY);
//ELSE
var result = this.repository.GetCityById(id);
//ADD result TO CACHED ITEMS
return result;
}
}
這就是我如何生成我的鑰匙
CLASSNAME + METHODNAME + PARAMS
這樣,我結束了緩存的方法resultd
除此之外,如果高速緩存中的項比datetime差(interval)更早,則應實施緩存過期策略,您可以使用datetime作爲緩存過期。轉到數據庫,否則將其放置在高速緩存中。從緩存中獲取它。 – DarthVader
你說得對!如果你想單元測試你的緩存過期策略,你可以實現AmbientContext模式,而不是嚴格使用DateTime實現!它適用於我的硬件應用程序..! – renatoargh
Renota,您的答案符合我所尋找的解決方案。但這仍然是一個基本的實現。看看這篇文章 - http://www.alachisoft.com/resources/articles/domain-objects-caching-pattern.html 這傢伙建議一個更好的方式來做事情。所以,我正在尋找一種可能被廣泛使用的解決方案。 – saarthak
有多少數據是在緩存中?什麼是緩存的平均大小?多少次讀/寫交易? – sll
我不完全知道,但肯定會碰到幾個100MB。我們還沒有實現緩存,但我們希望遵循行業推薦的做法。我們只是做了一個小實現來獲得Memcache的一個掛件。找到一篇關於此的好文章 - http://www.alachisoft.com/resources/articles/domain-objects-caching-pattern.html 同樣,想知道是否還有其他模式或實踐正在遵循。謝謝 – saarthak