之前一直想研究 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
http://www.urielkatz.com/archive/detail/memcached-64-bit-windows/
wind32:
http://jehiah.cz/projects/memcached-win32/
win64:
http://www.urielkatz.com/projects/memcached-win64/memcached-win64.zip
http://jehiah.cz/projects/memcached-win32/
-- |
2. 在 C:\Program Files 建立一個 memcached 目錄
3. 將下載的壓縮檔解壓縮至 C:\Program Files\memcached 目錄
4. 開啟命令提示字元(记得win2008/win7下一定要以管理员身份运行)
5. 將 memcached 註冊進 Windows 服務
"C:\Program Files\memcached\memcached.exe" -d install
6. 啟動 memcached 服務
"C:\Program Files\memcached\memcached.exe" -d start
移除 Memcached (ver 1.4.4) for Win32
1. 開啟命令提示字元
2. 停止 memcached 服務
"C:\Program Files\memcached\memcached.exe" -d stop
3. 將 memcached 服務從 Windows 服務中移除
"C:\Program Files\memcached\memcached.exe" -d uninstall
4. 移除 C:\Program Files\memcached 目錄
測試 memcached 是否正常運作
1. 透過 telnet 指令連接到 localhost 的 11211 port, 其中 Port 11211 為 memcached 預設的
Listen Port,如果有開啟防火牆記得要設定才能讓遠端連接。( 預設會 Listen 所有 interface )
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> 區段加入以下定義
<!-- Memcached --> <section name="cacheProvider" type="MemcachedProviders.Cache.CacheProviderSection, MemcachedProviders" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/> <sectionGroup name="enyim.com"> <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" /> </sectionGroup>
2. 然後在 <appSettings> 之上加入以下定義
<enyim.com> <memcached> <servers> <add address="127.0.0.1" port="11211" /> </servers> <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" /> </memcached> </enyim.com> <cacheProvider defaultProvider="MemcachedCacheProvider"> <providers> <add name="MemcachedCacheProvider" type="MemcachedProviders.Cache.MemcachedCacheProvider, MemcachedProviders" keySuffix="_MyProjectName_" defaultExpireTime="2000"/> </providers> </cacheProvider>
開始使用 memcached 的 API
1. 匯入 MemcachedProviders.Cache 命名空間
using MemcachedProviders.Cache;
2. 取得 Cache 項目
object objCache = DistCache.Get(cacheKey);
3. 寫入 Cache 項目
// 寫入快取資料 (預設過期時間) DistCache.Add(cacheKey, cacheValue); // 快取 60 秒 DistCache.Add(cacheKey, cacheValue, 60 * 1000); // 快取至今天結束 DistCache.Add(cacheKey, cacheValue, DateTime.Today.AddDays(1) - DateTime.Now);
4. 移除 Cache 項目
DistCache.Remove(cacheKey);
5. 移除所有 Cache 項目
DistCache.RemoveAll();
-- |
http://blog.miniasp.com/post/2010/01/27/Memcached-for-ASPNET-Quick-Start-Guide.aspx