配置的緩存並不能滿足我們的需求,例如有時候需要刷新緩存,或者某次查詢緩存時間或者緩存依賴 不一樣等。
刷新緩存
例如:
DbSession.Default.From<Products>().Where(Products._.ProductID == 1).Refresh ().ToFirst();
Refresh()方法設置了刷新緩存,即不從緩存中讀取,直接從數據庫讀取最新數據,並重新緩存。
設置查詢的緩存有效期。
例如:
DbSession.Default.From<Products>().Where(Products._.ProductID == 1).SetCacheTimeOut(180).ToFirst();
設置該查詢的緩存時間為180秒。
該設置會覆蓋默認緩存配置,並且緩存配置中沒有實體設置,也會緩存。
當下次執行:
DbSession.Default.From<Products>().Where(Products._.ProductID == 1).ToFirst();
在180秒內緩存有效。
設置緩存依賴。
例如:
System.Web.Caching.CacheDependency cacheDep = new System.Web.Caching.CacheDependency (Server.MapPath("~/2.txt"));
DbSession.Default.From<Products>().Where(Products._.ProductID == 1).SetCacheDependency(cacheDep).ToFirst();
設置該查詢緩存的緩存依賴為2.txt文件。
該設置會覆蓋默認緩存配置,並且緩存配置中沒有實體設置,也會緩存。
當再次執行:
DbSession.Default.From<Products>().Where(Products._.ProductID == 1).ToFirst();
如果2.txt文件沒有改變,緩存是不會失效的。
當然這幾個方法也可以同時使用。
緩存是根據生成的sql作為緩存依據的,所以寫法確保一致,特別是條件的先後順序,才能有效利用緩 存,否則就要浪費內存了。