快取的概念及優缺點在這裡就不多做介紹,主要介紹一下使用的方法。
duration:快取時間(秒為單位),必填屬性
2.使用微軟自帶的類庫system.web.caching
新手接觸的話不建議直接使用微軟提供的類庫,因為這樣對理解不夠深刻。所以在這裡我帶大家自己寫一套快取操作方法,這樣理解得更加清晰。
話不多說,**開敲。
一、首先,先模擬資料**。新建乙個類,寫乙個資料操作方法(該方法耗時、耗資源)
using
system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading;
using
system.threading.tasks;
namespace
cache
thread.sleep(2000);
return
result;
}
}
}
二、編寫乙個快取操作類
2.1 構造乙個字典型容器,用於存放快取資料,許可權設為private ,防止隨意訪問造成資料不安全性
//快取容器2.2 構造三個方法(新增資料至快取容器、從快取容器獲取資料、判斷快取是否存在)private static dictionarycachedictionary = new dictionary();
/// /// 新增快取三、程式入口編寫測試方法3.1 先看一下普通情況不適用快取,它的執行效率有多慢///
public static void add(string key, object value)
/// /// 獲取快取
///
public static t get(string key)
/// /// 判斷快取是否存在
///
///
///
public static bool exsits(string key)
using system;using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace cache
次請求------");
int result = datasource.getdatabydb(666);
console.writeline($"第次請求獲得的資料為:");}}
3.2 接下來,我們編寫快取試用方法。概念無非就是根據key前往字典容器裡查詢是否有相對應快取資料,有則直接呼叫,沒有則生成並存入字典容器裡。
using system;3.3 我們看看加入快取之後的效率如何using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace cache
次請求------");
//int result = datasource.getdatabydb(666);
int result = 0;
//key的名字一定要確保請求的準確性 datasource getdatabydb 666缺一不可
string key = "datasource_getdatabydb_666";
if (cachehelper.exsits(key))
else
console.writeline($"第次請求獲得的資料為:");}}
}}
四、可以看到,瞬間完成。事已至此,快取的使用基本是完成了。但是回過頭來我們想想看。乙個系統成百上千個地方使用快取的話,那豈不是要寫成百上千個if else判斷快取是否存在,然後獲取?
答案顯而易見,肯定不合理的。所以我們要對**進行優化。
4.1 快取操作類(cachehelper)編寫乙個通用的獲取方法
/// /// 快取獲取方法4.2 程式入口進行呼叫,傳入的委託引數為lamad表示式優化後的**///
///
/// 快取字典容器對應key
/// 委託方法 傳入操作物件
///
public static t getcache(string key, funcfunc)
else
return t;
}
using system;到這裡,快取的使用基本結束了。最好值得一提的是,快取盡量在資料量小、重複查詢量大的情況下使用。因為快取也是要耗記憶體的,伺服器記憶體是有限的!using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace cache
次請求------");
int result = 0;
//key的名字一定要確保請求的準確性 datasource getdatabydb 666缺一不可
string key = "datasource_getdatabydb_666";
//將需要執行的獲取資料操作編寫成委託傳入方法(重點)
//funcfunc = new func(() => );
result = cachehelper.getcache(key, () => datasource.getdatabydb(666));
console.writeline($"第次請求獲得的資料為:");}}
}}
C 中快取的使用
快取的概念及優缺點在這裡就不多做介紹,主要介紹一下使用的方法。duration 快取時間 秒為單位 必填屬性 2.使用微軟自帶的類庫system.web.caching 新手接觸的話不建議直接使用微軟提供的類庫,因為這樣對理解不夠深刻。所以在這裡我帶大家自己寫一套快取操作方法,這樣理解得更加清晰。話...
spring boot 中的快取使用
借鑑 專案中用到登入,對使用者的操作太多,所以將使用者的資訊通過快取的方式。快取 ehcache 框架 spring boot 1.專案依賴 org.springframework.boot spring boot starter cache net.sf.ehcache ehcache 2.ehc...
C 使用Redis快取
redis是乙個開源的使用ansi c語言編寫 支援網路 可基於記憶體亦可持久化的日誌型 key value資料庫,並提供多種語言的api。從2010年3月15日起,redis的開發工作由vmware主持。從2013年5月開始,redis的開發由pivotal贊助。nuget新增servicesta...