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

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

安裝 Memcached (ver 1.4.4) for Win32

1. 下載 memcached 1.4.4 Windows 32-bit binarymemcached 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

[html] view plaincopy

  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

[html] view plaincopy

  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

[html] view plaincopy

  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

[html] view plaincopy

  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

[html] view plaincopy

  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. <sectionGroup name="enyim.com">
  6. <section name="memcached"
  7. type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
  8. </sectionGroup>

[csharp] view plaincopy

  1. <!-- Memcached -->
  2. <section name="cacheProvider"
  3. type="MemcachedProviders.Cache.CacheProviderSection, MemcachedProviders"
  4. allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
  5. <sectionGroup name="enyim.com">
  6. <section name="memcached"
  7. type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
  8. </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>

[csharp] view plaincopy

  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;

[csharp] view plaincopy

  1. using MemcachedProviders.Cache;

2. 取得 Cache 項目

Csharp代码

  1. object objCache = DistCache.Get(cacheKey);

[csharp] view plaincopy

  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);

[csharp] view plaincopy

  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);

[csharp] view plaincopy

  1. DistCache.Remove(cacheKey);

5. 移除所有 Cache 項目

Csharp代码

  1. DistCache.RemoveAll();

[csharp] view plaincopy

  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 不見得有人理 (還好是開源碼可以自己改)

时间: 2024-11-05 06:14:59

转载:在 ASP.NET 環境下使用 Memcached 快速上手指南的相关文章

在linux環境下安裝jprofiler_linux_8_0_2.sh

1.安装jprofiler_linux_8_0_2.sh chmod+x jprofiler_linux_8_0_2.sh ./jprofiler_linux_8_0_2.sh –c 安装过程略..几乎Enter到底(也可在图形界面下安装不加-c选项,则为图形安装) 2.编辑/etc/profile exportLD_LIBRARY_PATH=/opt/jprofiler8/bin/linux-x64 exportLD_LIBRARY_PATH source/etc/profile 3编辑sta

在 docker 環境下建立以 MongoDB &amp; NodeJS 為架構的 web server (for Win7)

參考文獻 教材程式碼 教材解答 說明: http://proserge.kh.ua/coding/index.php/post/33/MongoDB+for+NodeJs+devs+week4%3A+Perfomance node.js + mongo db 是大家習慣使用建立 [Web + database] project 的工具;以上教材是在 docker 的環境下的建立簡易部落格.教材程式碼部分露空,主要讓讀者自己完成;答案也有網址,為了方便展示執行結果,我將 2 者合併為一個 proj

基于Asp.net core + EF + Sqlite 5分钟快速上手一个小项目

虽然该方法不会用在实际开发中,但该过程对于初学者还是非常友好的,真应了麻雀虽小,五脏俱全这句话了.好了不多废话了,直接开始!! 1.建立一个名为test的Asp.net core web应用程序 这一部分的目的是建立项目,并使用MVC框架. 2.导入依赖项(sqlite数据库 与 EF core) 这一部分的操作目的是可以让我们的项目可以使用操作数据库的一些功能. Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore

ASP.NET MVC + MySQL で開発環境構築

from:http://qiita.com/midori44/items/ef7cdd1d37c353e44b5f ASP.NET MVC & EntityFramework によるコードファースト開発環境を MySQL で構築してみます.と言っても今回はプロジェクトを作成して ASP.NET Identity によるユーザー認証を MySQL で動かすところまで. (2015.10.22 追記)Visual Studio 2015 + .NET Framework 4.6 でも動作確認.現在

(转载)ASP网站如何防止注入漏洞攻击

SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如 果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉.但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况.能不能根据具体情 况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据. 据统计,网站用ASP+Access或SQLServer的占70%以 上,PHP+MySQ占L20%,其他的不足10%.在本文,以SQL-SERVER+ASP例

【Linux Ubuntu】安裝 Java SE Development Kit(JDK)並配置環境變量

下載頁面:http://www.oracle.com/technetwork/java/javase/archive-139210.html 打開“Java SE 7”,再打開“Java SE Development Kit 7u80”,選擇“Accept License Agreement”同意 Oracle Binary Code License Agreement for Java SE,點擊對應版本開始下載. 終端輸入以下命令: 1 # 創建 JDK 目錄,-p 爲創建多個目錄 2 $

Selenium自動化測試(Python+VS2013)-基礎篇-環境安裝

Python+VS2013環境安裝 http://www.cnblogs.com/aehyok/p/3986168.html PTVS: http://microsoft.github.io/PTVS/ Python: https://www.python.org/downloads/release/python-344/ Python下安裝Selenium 運行-->cmd 切換到pip目錄(C:\Python34\Scripts) cd C:\Python34\Scripts pip ins

免安裝、免設定的 Hadoop 開發環境 - cloudera 的 QuickStart VM

cloudera 的 QuickStart VM,為一種免安裝.免設定 Linux 及 Hadoop,已幫你建好 CDH 5.x.Hadoop.Eclipse 的一個虛擬機環境.下載後解壓縮,可直接以 VirtualBox.VMWare.Docker.KVM 任一虛擬機,開啟 Hadoop 2.x 執行環境,並可用內建本地模式的 Eclipse 開發工具,開發.執行 Hadoop 程式碼. 下載點 :http://www.cloudera.com/downloads.html?productID

Windows安裝PHP環境

Windows安裝PHP環境的準備工作:httpd-2.2+php-5.4+mysql-5.5 第一步是安裝相對應的三個軟件,只要略懂一些英文單詞,安裝是沒有問題的,所以此處略過三個文件的安裝過程,直接跳入第二步吧! 第二步,配置文件,整合Apache+PHP+MySQL.     配置Apache的配置文件httpd.conf,讓其支持解析PHP文件. 在Apache安裝根目錄的conf文件夾下,找到httpd.conf文件並打開,使用CTRL+F找到#LoadModule vhost_ali