在 ASP.NET 環境下使用 Memcached 快速上手指南

在 ASP.NET 環境下使用 Memcached 快速上手指南           
 

之前一直想研究 Memcached,這幾天花了些時間研究Memcached Providers 好讓我現有的 ASP.NET 專案能解決多台主機間快取不同步的狀況, 想不到花沒多少時間就上手了,也因此做了一些記錄。

安裝 Memcached (ver 1.4.4) for Win32

1. 下載 memcached 1.4.4 Windows 32-bit binary memcached Windows 64-bit pre-release

2. 在 C:\Program Files 建立一個 memcached 目錄

3. 將下載的壓縮檔解壓縮至 C:\Program Files\memcached 目錄

4. 開啟命令提示字元

5. 將 memcached 註冊進 Windows 服務

Html代码 复制代码
  1. "C:\Program Files\memcached\memcached.exe" -d install  

6. 啟動 memcached 服務

Html代码 复制代码
  1. <span class="str">"C:\Program Files\memcached\memcached.exe"</span> -d start  

移除 Memcached (ver 1.4.4) for Win32

1. 開啟命令提示字元

2. 停止 memcached 服務

Html代码 复制代码
  1. <span class="str">"C:\Program Files\memcached\memcached.exe"</span> -d stop  

3. 將 memcached 服務從 Windows 服務中移除

Html代码 复制代码
  1. <span class="str">"C:\Program Files\memcached\memcached.exe"</span> -d uninstall  

4. 移除 C:\Program Files\memcached 目錄

測試 memcached 是否正常運作

1. 透過 telnet 指令連接到 localhost 的 11211 port, 其中 Port 11211 為 memcached 預設的 Listen Port,如果有開啟防火牆記得要設定才能讓遠端連接。( 預設會 Listen 所有 interface )

Html代码 复制代码
  1. telnet localhost 11211  

2. 輸入 stats 指令,並按下 Enter 取得目前 memcached 服務的運作狀態,有資料就代表安裝成功了


3. 輸入 quit 指令,並按下 Enter 退出

備註:完整指令請參考 memcached protocol

設定 ASP.NET 專案

1. 下載 Memcached Providers 組件 ==> Memcached Providers 1.2 (.NET 3.5)

2. 將以下組件複製到 ASP.NET 網站的 bin 目錄下,或透過 加入參考(Add Reference) 方式將加入專案

  • Enyim.Caching.dll
  • Enyim.Caching.pdb
  • MemcachedProviders.dll
  • MemcachedProviders.pdb

設定 Memcached Cached Provider 並註冊至 web.config

1. 在 <configSections> 區段加入以下定義

Csharp代码 复制代码
  1. <!-- Memcached -->  
  2. <section name="cacheProvider"   
  3.     type="MemcachedProviders.Cache.CacheProviderSection, MemcachedProviders"  
  4.     allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>  
  5.       
  6. <sectionGroup name="enyim.com">  
  7.   <section name="memcached"  
  8.       type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />  
  9. </sectionGroup>  
2. 然後在 <appSettings> 之上加入以下定義

Csharp代码 复制代码
  1. <enyim.com>  
  2.   <memcached>  
  3.     <servers>  
  4.       <add address="127.0.0.1" port="11211" />  
  5.     </servers>  
  6.     <socketPool minPoolSize="10" maxPoolSize="100"  
  7.         connectionTimeout="00:00:10" deadTimeout="00:02:00" />  
  8.   </memcached>  
  9. </enyim.com>  
  10. <cacheProvider defaultProvider="MemcachedCacheProvider">  
  11.   <providers>  
  12.     <add name="MemcachedCacheProvider"  
  13.       type="MemcachedProviders.Cache.MemcachedCacheProvider, MemcachedProviders"  
  14.       keySuffix="_MyProjectName_" defaultExpireTime="2000"/>  
  15.   </providers>  
  16. </cacheProvider>  
開始使用 memcached 的 API

1. 匯入 MemcachedProviders.Cache 命名空間

Csharp代码 复制代码
  1. using MemcachedProviders.Cache;  
2. 取得 Cache 項目

Csharp代码 复制代码
  1. object objCache = DistCache.Get(cacheKey);  
3. 寫入 Cache 項目

Csharp代码 复制代码
  1. // 寫入快取資料 (預設過期時間)  
  2. DistCache.Add(cacheKey, cacheValue);  
  3. // 快取 60 秒  
  4. DistCache.Add(cacheKey, cacheValue, 60 * 1000);  
  5. // 快取至今天結束  
  6. DistCache.Add(cacheKey, cacheValue, DateTime.Today.AddDays(1) - DateTime.Now);  
4. 移除 Cache 項目

Csharp代码 复制代码
  1. DistCache.Remove(cacheKey);  
5. 移除所有 Cache 項目

Csharp代码 复制代码
  1. DistCache.RemoveAll();  
心得總結 (優點)

  • 架構簡單、容易上手
  • API 與 ASP.NET 快取機制類似,將現有的 HttpRuntime.Cache 替換成 DisCache 也很容易,像我大約只花半天就將一個不小的專案從ASP.NET 快取轉移至 memcached 快取
  • 安裝部署容易
  • 很容易擴充記憶體快取的總量,增加 memcached 伺服器並修改 web.config 即可!
  • 超高效能,同時支援 TCP 與 UDP 協定
  • 跨平台、跨語言、開放協定、開放原始碼、許多大網站都使用 memcached
  • 內建提供 Session Provider

心得總結 (缺點)

  • 無法取得所有快取項目,用 ASP.NET 快取可以透過 Cache.GetEnumerator() 取得所有快取項目 ( 參考: ASP.NET 如何將目前的 Cache 物件全部清空 ),但在 memcached 完全沒辦法,因為 memcached protocol 根本沒有定義這個功能,除非你自行實做。
  • 網路上可下載的 memcached 版本都不支援 高可用性(High Availability; HA) 特性
  • AppFabric Caching (Velocity) 相比功能少很多
  • 缺乏中文資源、文件少、中文社群不積極、有 Bug 不見得有人理 (還好是開源碼可以自己改)

 

http://csstome.iteye.com/blog/1219460

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值