ASP.NET基本分布式緩衝Memcached測試執行個體

來源:互聯網
上載者:User

下面測試下分布式緩衝Memcached軟體,一直在學習關注大訪問量網站的緩衝是如何?,之前看過Memcached的資料,忙於沒有時間來真正測試一下,本文測試分布式緩衝Memcached的環境如下:(兩台電腦作為伺服器)
第一台:
 CPU:Inter(R) Pentium(R) 4 CPU 2.8G
 記憶體:1G
 系統:windows 7
 IIS: IIS 7
 IP:172.10.1.97
 環境:本地
 安裝:memcached 1.2.1 for Win32
第二台:
 CPU:Inter(R) Pentium(R) 4 CPU 3.0G
 記憶體:2G
 系統:windows Server 2003
 IIS: IIS 6
 IP:172.10.1.236
 環境:遠程
 安裝:memcached 1.2.1 for Win32

測試程式部署到本地環境(172.10.1.97),開發工具VS2008 .NET3.5
本文使用到memcached 1.2.1 for Win32:
http://jehiah.cz/projects/memcached-win32/
更多memcached版本大全請進入

http://www.xueit.com/html/2009-11-12/32-1550931594781.html

好了,下面我們按步驟來測試:
第一、
 首先到把下載好的memcached 1.2.1解壓到C:\memcached目錄,分別複製到兩台伺服器中。
第二、
 安裝memcached服務,在命令提示字元輸入CD c:\memcached進入到memcached目錄,如:

之後輸入memcached -h 斷行符號,看協助說明,接下來輸入memcached -d install 斷行符號即可自動安裝memcached服務了,如:

安裝memcached服務圖

安裝好安裝memcached服務後,輸入memcached -d start 斷行符號啟動memcached服務,如:

啟動memcached服務圖

在172.10.1.97與172.10.1.236兩台電腦都按以上操作來安裝啟動memcached。

第三、

       下載.NET版memcached用戶端API組件來寫測試程式。

本文使用memcacheddotnet,如下:

http://sourceforge.net/projects/memcacheddotnet/

下載好之後把這些檔案Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll放到bin目錄(少一個都不行),之後再到測試專案開發環境引用Memcached.ClientLibrary.dll,如

引用Memcached.ClientLibrary.dll圖

第四、

      測試程式:

View Code

using System;
using System.Collections;
using System.Text;

// 須引用Memcached
using Memcached.ClientLibrary;

namespace test
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request["action"] == "clear")
this.clear();
else
this.test();
}
}

/// <summary>
/// 清空緩衝
/// </summary>
public void clear()
{
string[] servers = { "172.10.1.97:11211", "172.10.1.236:11211" };

//初始化池
SockIOPool pool = SockIOPool.GetInstance();
pool.SetServers(servers);
pool.InitConnections = 3;
pool.MinConnections = 3;
pool.MaxConnections = 5;
pool.SocketConnectTimeout = 1000;
pool.SocketTimeout = 3000;
pool.MaintenanceSleep = 30;
pool.Failover = true;
pool.Nagle = false;
pool.Initialize();
MemcachedClient mc = new Memcached.ClientLibrary.MemcachedClient();
mc.EnableCompression = false;
mc.Delete("cache");
mc.Delete("endCache");
Response.Write("清空緩衝成功");
}

/// <summary>
/// 測試緩衝
/// </summary>
public void test()
{
//分布Memcachedf服務IP 連接埠
string[] servers = { "172.10.1.97:11211","172.10.1.236:11211" };

//初始化池
SockIOPool pool = SockIOPool.GetInstance();
pool.SetServers(servers);
pool.InitConnections = 3;
pool.MinConnections = 3;
pool.MaxConnections = 5;
pool.SocketConnectTimeout = 1000;
pool.SocketTimeout = 3000;
pool.MaintenanceSleep = 30;
pool.Failover = true;
pool.Nagle = false;
pool.Initialize();
//用戶端執行個體
MemcachedClient mc = new Memcached.ClientLibrary.MemcachedClient();
mc.EnableCompression = false;
StringBuilder sb = new StringBuilder();
//寫入緩衝
sb.AppendLine("寫入緩衝測試:");
sb.AppendLine("<br>_______________________________________<br>");
if (mc.KeyExists("cache"))
{
sb.AppendLine("緩衝cache已存在");
}
else
{
mc.Set("cache", "寫入緩衝時間:" DateTime.Now.ToString());
sb.AppendLine("緩衝已成功寫入到cache");
}
sb.AppendLine("<br>_______________________________________<br>");
sb.AppendLine("讀取緩衝內容如下:<br>");
sb.AppendLine(mc.Get("cache").ToString());

//測試緩衝到期
sb.AppendLine("<br>_______________________________________<br>");
if (mc.KeyExists("endCache"))
{
sb.AppendLine("緩衝endCache已存在,到期時間為:" mc.Get("endCache").ToString());
}
else
{
mc.Set("endCache", DateTime.Now.AddMinutes(1).ToString(), DateTime.Now.AddMinutes(1));
sb.AppendLine("緩衝已更新寫入到endCache,寫入時間:" DateTime.Now.ToString() " 到期時間:" DateTime.Now.AddMinutes(1).ToString());
}

//分析緩衝狀態
Hashtable ht = mc.Stats();
sb.AppendLine("<br>_______________________________________<br>");
sb.AppendLine("Memcached Stats:");
sb.AppendLine("<br>_______________________________________<br>");
foreach (DictionaryEntry de in ht)
{
Hashtable info = (Hashtable)de.Value;
foreach (DictionaryEntry de2 in info)
{
sb.AppendLine(de2.Key.ToString() ":&nbsp;&nbsp;&nbsp;&nbsp;" de2.Value.ToString() "<br>");
}
}
Response.Write(sb.ToString());
}
}
}

 

第五、

    運行看效果:

緩衝

我在本地172.10.1.97運行memcached -d stop來停止memcached服務,運行上面程式,一樣正確,說明緩衝也同樣儲存到遠程172.10.1.236這台伺服器了。

這樣簡單就可以實現分布式緩衝,使用緩衝又多了一個選擇,不必使用.NET內建的Application與cache了,訪問量大的網站實現分布式緩衝有很多好處。

有什麼問題請指正,下期再出其它教程。

轉自:http://www.xueit.com/asp.net/show-4880-2.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.