ASP.NET基本分布式缓存Memcached测试实例
2012-02-10 15:44
225 查看
下面测试下分布式缓存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目录,如下图:
View Code
第五、
运行看效果:
![](http://www.xueit.com/upload/pic/200911/200911121652112.png)
缓存效果图
我在本地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
第一台:
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目录,如下图:
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() ": " de2.Value.ToString() "<br>"); } } Response.Write(sb.ToString()); } } }
第五、
运行看效果:
![](http://www.xueit.com/upload/pic/200911/200911121652112.png)
缓存效果图
我在本地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
相关文章推荐
- ASP.NET基本分布式缓存Memcached测试实例
- ASP.net 2.0发送邮件实例,本人已经测试通过,贴出代码
- asp.net页面传值测试实例
- 水晶报表asp.net的webform下基本用法实例
- ASP.net 2.0发送邮件实例,本人已经测试通过,贴出代码
- 水晶报表asp.net的webform下基本用法实例
- ASP.NET操作mysql数据库的实例(傻瓜都能看懂,已测试过)
- ASP.NET中Dictionary基本用法实例分析
- Asp.net内置对象之Cookies(简介/属性方法/基本操作及实例)
- asp.net页面传值测试实例代码(前后台)
- asp.net页面传值测试实例代码(前后台)
- 使用基本的ASP.NET服务器端控件的综合实例
- Asp.net内置对象之Cookies(简介/属性方法/基本操作及实例)
- ASP.NET中Dictionary基本用法实例分析
- asp.net页面传值测试实例代码(前后台)
- WinForm中 Asp.Net Signalr消息推送测试实例
- asp.net 身份验证机制实例代码
- ASP.NET MVC下Ajax.BeginForm方式无刷新提交表单实例
- 在ASP.NET页面间传递任意数据的方法与实例