国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

實例解析.NET版分布式緩存Memcached_.Net教程

2024-07-10 12:51:47
字體:
來源:轉載
供稿:網友

推薦:試析ASP.NET的IIS映射
ASP.NET默認擴展名為.aspx,可是我們看到許多網站的擴展名很特別,比如校內的do。個性之余還可以實現簡單的偽靜態(即把后綴改為html)不過相對URLRewriter來說,是有點簡陋(只能改掉連接中的.aspx),不過不失為一種方法。下面我們就來實現他! 先來說一下

下面測試下分布式緩存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圖

第四、測試程序:

以下為引用的內容:
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了,訪問量大的網站實現分布式緩存有很多好處。

分享:淺談ASP.NET的PHP執行速度
上星期我在InfoQ發表了一篇新聞,對Joe Stagner在博客上發表的三篇關于ASP.NET與PHP性能對比的文章進行了總結。寫新聞其實挺不爽的,因為不能夾雜個人的看法,只能平鋪直敘陳述事實。當然,如果像某些新聞那樣換一種說法是可以騙過一些不明真相的群眾,但是

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 介休市| 安图县| 清徐县| 武平县| 汉寿县| 白山市| 改则县| 武城县| 密山市| 明水县| 二手房| 阳江市| 安义县| 印江| 靖安县| 平塘县| 中牟县| 信宜市| 寻乌县| 潜山县| 灵寿县| 西青区| 库车县| 盐山县| 淳化县| 黎川县| 独山县| 公主岭市| 卢湾区| 竹北市| 抚顺市| 徐闻县| 玉林市| 迁安市| 武乡县| 辽宁省| 敦煌市| 乐安县| 大邑县| 康平县| 乌兰浩特市|