在完成了DNS解析模塊之後,我意識到了DNS緩存機制也很有必要。在Redis,Memcache,和.Net自帶的Cache之間,考慮到部署問題,最終選擇了後者,之前在學習Web及開發的過程中用過System.Web.Caching.Cache這個類庫,但是這次的爬蟲程序我打算部署為桌面軟件,所以選用了System.Runtime.Caching.MemoryCache(後期如有必要也會加入System.Web.Caching.Cache來適配Web端程序)。
MemoryCache的使用網上介紹的不多,不過這個是.NET4.0新引入的緩存對象,估計主要是替換原來企業庫的緩存模塊,使得.NET的緩存可以無處不在,而不用基於特定的Windows版本上使用。
出於方便考慮,我們將不再實例化新的MemoryCache對象,只對MemoryCache的默認示例Memory.Default進行增刪查操作。
基礎篇
增加:
var item = new CacheItem("習大大", "兩學一做"); var policy = new CacheItemPolicy(); policy.SlidingExpiration = new TimeSpan(500); //插入一條key為"習大大",value為"兩學一做",500毫秒後自動銷毀的緩存 MemoryCache.Default.Add(item, policy); //重新設置policy的過期時間為當前時間+十分鐘 policy.AbsoluteExpiration = DateTimeOffset.Now + TimeSpan.FromMinutes(10); //注意,如果要使用Sliding時間,則Absolute必須為DateTimeOffset.MaxValue,反之,則Sliding必須為TimeSpan.Zero policy.SlidingExpiration = TimeSpan.Zero; //重新插入,覆蓋前一條數據 MemoryCache.Default.Add(item, policy);
注意,如果要使用Sliding時間,則Absolute必須為DateTimeOffset.MaxValue,反之,則Sliding必須為TimeSpan.Zero
查詢:
緩存對象類似於字典集,查詢可以直接采用memoryCache[key]來進行,例如我們查詢一下前面插入的那條數據:
var idea = MemoryCache.Default["習大大"];
移除:
參數