zoukankan      html  css  js  c++  java
  • (转第二方案)在 ASP.NET 環境下使用 Memcached 快速上手指南

    转自:http://blog.miniasp.com/post/2010/01/27/Memcached-for-ASPNET-Quick-Start-Guide.aspx

    之前一直想研究 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 Filesmemcached 目錄

    4. 開啟命令提示字元

    5. 將 memcached 註冊進 Windows 服務

    "C:Program Filesmemcachedmemcached.exe" -d install

    6. 啟動 memcached 服務

    "C:Program Filesmemcachedmemcached.exe" -d start

    移除 Memcached (ver 1.4.4) for Win32

    1. 開啟命令提示字元

    2. 停止 memcached 服務

    "C:Program Filesmemcachedmemcached.exe" -d stop

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

    "C:Program Filesmemcachedmemcached.exe" -d uninstall

    4. 移除 C:Program Filesmemcached 目錄

    測試 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();

    心得總結 (優點)

    • 架構簡單、容易上手
    • 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 不見得有人理 (還好是開源碼可以自己改)

    相關連結

  • 相关阅读:
    GhostBSD 3.0RC3,基于GNOME的FreeBSD
    Nagios 3.4.3 发布,企业级监控系统
    Jolokia 1.0.6 发布, JMX远程访问方法
    微软希望开发人员不要使 WebKit 成为新版 IE6
    Kwort Linux 3.5 正式版发布
    EJDB 1.0.24 发布,嵌入式 JSON 数据库引擎
    Pale Moon 15.3 Firefox“苍月”优化版发布
    Galera Load Balancer 0.8.1 发布
    SmartSVN V7.5 正式发布
    PostgresQL建立索引如何避免写数据锁定
  • 原文地址:https://www.cnblogs.com/jiajinyi/p/3535247.html
Copyright © 2011-2022 走看看