ASP.NET中Memcached

iDotNetSpace發表於2009-11-06

 一,準備
        你需要有一下軟體:
       VS.NET(05/08)
       SQLSERVER
       memcached伺服器端以及客戶端類庫(開源軟體,下載即可)
其中,客戶端類庫包括以下幾個DLL:
       Memcached.ClientLibrary.dll
       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
            {
                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);等等。可以自己琢磨了。

         以上只是演示,其實資料快取是一項複雜而繁瑣的工作,不僅需要後臺程式碼的分層優化,也需要資料庫對大資料量訪問的策略和調優。

原文地址:http://www.cnblogs.com/mingh/archive/2009/11/06/1597266.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-618270/,如需轉載,請註明出處,否則將追究法律責任。

相關文章