仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 729|回复: 6
打印 上一主题 下一主题

[学习教程] ASP.NET编程:原创:.NET版散布式缓存Memcached测试实...

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:23:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
兄弟们,想来你们都看过了昨天的比赛了。我现在的痛苦状跟当时应该差不多。希望本版.net老师不吝赐教,为小弟这一批迷途的羊羔指一条阳光之道!您也知道:学习技术如果只有一个人摸索,那是一件多么痛苦的事情!还有,如果万辛能得名师或长者指点,那又是多么一件幸福和快乐的事情!上面测试下散布式缓存Memcached软件,一向在进修存眷年夜会见量网站的缓存是怎样完成,之前看过Memcached的材料,忙于没偶然间来真正测试一下,本文测试散布式缓存Memcached的情况以下:(两台电脑作为服务器)第一台:
CPU:Inter(R)Pentium(R)4CPU2.8G
内存:1G
体系:windows7
IIS:IIS7
IP:172.10.1.97
情况:当地
安装:memcached1.2.1forWin32
第二台:
CPU:Inter(R)Pentium(R)4CPU3.0G
内存:2G
体系:windowsServer2003
IIS:IIS6
IP:172.10.1.236
情况:远程
安装:memcached1.2.1forWin32
测试程序部署到当地情况(172.10.1.97),开辟工具VS2008.NET3.5
本文利用到memcached1.2.1forWin32下载地点:
http://jehiah.cz/projects/memcached-win32/
更多memcached版本年夜全请进进
http://www.xueit.com/html/2009-11-12/32-1550931594781.html
好了,上面我们按步骤来测试:
第1、起首到把下载好的memcached1.2.1解压到C:memcached目次,分离复制到两台服务器中。
第2、安装memcached服务,在命令提醒符输出CDc:memcached进进到memcached目次,以下图:

以后输出memcached-h回车,看匡助申明,接上去输出memcached-dinstall回车便可主动安装memcached服务了,以下图:

安装memcached服务图
安装好安装memcached服务后,输出memcached-dstart回车启动memcached服务,以下图:

启动memcached服务图
在172.10.1.97与172.10.1.236两台电脑都按以上操纵来安装启动memcached。
第3、下载.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图
第4、测试程序:
以下为援用的内容:
usingSystem;
usingSystem.Collections;
usingSystem.Text;

//须援用Memcached
usingMemcached.ClientLibrary;

namespacetest
{
publicpartialclass_Default:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!IsPostBack)
{
if(Request["action"]=="clear")
this.clear();
else
this.test();
}
}

///<summary>
///清空缓存
///</summary>
publicvoidclear()
{
string[]servers={"172.10.1.97:11211","172.10.1.236:11211"};

//初始化池
SockIOPoolpool=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();
MemcachedClientmc=newMemcached.ClientLibrary.MemcachedClient();
mc.EnableCompression=false;
mc.Delete("cache");
mc.Delete("endCache");
Response.Write("清空缓存乐成");
}

///<summary>
///测试缓存
///</summary>
publicvoidtest()
{
//散布Memcachedf服务IP端口
string[]servers={"172.10.1.97:11211","172.10.1.236:11211"};

//初始化池
SockIOPoolpool=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();
//客户端实例
MemcachedClientmc=newMemcached.ClientLibrary.MemcachedClient();
mc.EnableCompression=false;
StringBuildersb=newStringBuilder();
//写进缓存
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());
}

//剖析缓存形态
Hashtableht=mc.Stats();
sb.AppendLine("<br>_______________________________________<br>");
sb.AppendLine("MemcachedStats:");
sb.AppendLine("<br>_______________________________________<br>");
foreach(DictionaryEntrydeinht)
{
Hashtableinfo=(Hashtable)de.Value;
foreach(DictionaryEntryde2ininfo)
{
sb.AppendLine(de2.Key.ToString()":"de2.Value.ToString()"<br>");
}
}
Response.Write(sb.ToString());
}
}
第5、运转看效果:

缓存最终效果我在当地172.10.1.97运转memcached-d
stop来中断memcached服务,运转下面程序,一样准确,申明缓存也一样保留到远程172.10.1.236这台服务器了。如许复杂就能够完成散布式缓存,利用缓存又多了一个选择,不用利用.NET自带的Application与cache了,会见量年夜的网站完成散布式缓存有良多优点。有甚么成绩请斧正,下期再出别的教程。转载请说明文章来历及原始链接,感谢互助!原文:http://www.xueit.com/html/2009-11-12/21-932220455859.html
前几天同学问我学习方向的问题。有点想法,不知道对不对,怕误导同学,现在“开源一下”。注:括号内是我现在整理的时填加上的。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-19 09:55:43 | 只看该作者
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-26 12:32:52 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
因胸联盟 该用户已被删除
地板
发表于 2015-2-4 15:18:25 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
飘灵儿 该用户已被删除
5#
发表于 2015-2-10 02:57:07 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
冷月葬花魂 该用户已被删除
6#
发表于 2015-3-10 04:01:21 | 只看该作者
能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
金色的骷髅 该用户已被删除
7#
发表于 2015-3-17 04:32:34 | 只看该作者
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 21:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表