ASP.NET使用Memcached高緩存實例的初級介紹

  Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提供動態、數據庫驅動網站的速度。Memcached做爲緩存技術的解決方案,已是衆所周知了;如今不少WEB應用都在使用它——包括一些知名的網站。若你還不知道這些,請在閱讀以前先了解一下。html

  一,準備web

  你須要有一下軟件:數據庫

  VS.NET(05/08)緩存

  SQLSERVER服務器

  memcached服務器端以及客戶端類庫(開源軟件,下載便可)app

  其中,客戶端類庫包括如下幾個DLL:分佈式

  Memcached.ClientLibrary.dllmemcached

  ICSharpCode.SharpZipLib.dll性能

  log4net.dll測試

  二,安裝memcached服務器端

  將memcached.exe複製到任意目錄下,如 c:,在命令行輸入:

  memcached.exe -d install

  memcached將做爲一個服務常駐系統內存了

  三,創建ASP.NET工程

  建立一個ASP.NETWEB項目,命名爲MMCWEB,添加以上提到的幾個客戶端類庫的引用。

  四,配置

  memcached使用了log4net,因此咱們先配置log4net

  在web.config裏找到configSections節點,添加如下內容

  再在configSections節點以外,增長如下內容:

  啓動調試,若沒出現配置的出錯提示,而且在網站目錄下有文件夾LogFiles,就說明log4net配置成功了。

  五,初始化SockIOPool

  SockIOPool是什麼東東?SockIOPool是Memcached客戶端提供的一個套接字鏈接池,通俗講,就是與Memcached服務器端交換數據的對象。SockIOPool在應用程序啓動時初始化一次就能夠了,我把這個工做放在 GLOBAL.ASAX.CS的Application_Start方法裏

  char[] separator = { ',' };

  string[] serverlist = ConfigurationManager.AppSettings["Memcached.ServerList"].Split(separator);

  // initialize the pool for memcache servers

  try無錫人流多少錢 http://wapyyk.39.net/wx/zonghe/fc96e.html/

  {

  SockIOPool pool = SockIOPool.GetInstance();

  pool.SetServers(serverlist);

  pool.InitConnections = 3;

  pool.MinConnections = 3;

  pool.MaxConnections = 50;

  pool.SocketConnectTimeout = 1000;

  pool.SocketTimeout = 3000;

  pool.MaintenanceSleep = 30;

  pool.Failover = true;

  pool.Nagle = false;

  pool.Initialize();

  }

  catch (Exception err)

  {

  //這裏就能夠用Log4Net記錄Error啦!

  }

  注意AppSettings["Memcached.ServerList"]是在WEB.CONFIG裏設置的,因此WEB.CONFIG的appSettings的子節點裏須要有如下一行

  啓動調試服務器,若沒有出錯的日誌記錄,說明IO鏈接池已經開闢成功。

  六,使用Memcached

  終於進入正題了,不過使用以前,咱們還須要準備一些數據。

  建立一個實體類People,並加上Serializable屬性!!!

  對應的數據庫裏,增長一張表,字段對應實體類,插入一些測試數據。持久層和業務層的設計就略過了,他們負責向提供一些數據,返回類型可自定,若ILIST,DATASET。

  Memcached使用起來就很簡單了,好比後臺檢索出一組People類型的數據,放在一個叫peopleList的arraylist裏,並且這個arraylist要頻繁使用,只須要這樣

  MemcachedClient mc = new MemcachedClient();

  mc.EnableCompression = true;

  mc.Set(key, peopleList);

  上面的key是用來訪問這個arraylist的鍵,Memcached裏的數據都是保存爲鍵-值對的。

  一旦mc.KeyExists(key)爲TRUE,就用return mc.Get(key) as ArrayList提取數據,刪除時,使用 return mc.Delete(key);等等。能夠本身琢磨了。

  以上只是演示,其實數據緩存是一項複雜而繁瑣的工做,不只須要後臺代碼的分層優化,也須要數據庫對大數據量訪問的策略和調優。

相關文章
相關標籤/搜索