黑基Web安全攻防班
安基网 首页 IT技术 电脑技术 查看内容

分布式缓存系统Memcached简介与实践

2008-12-12 10:28| 投稿: computer

摘要: 博客园的相关资料:http://kb.cnblogs.com/zt/memcached/ 缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓...

免责声明:本站系公益性非盈利IT网站,本文由投稿者转载自互联网,文末已注明出处,其内容和图片版权归原作者所有,文中所述不代表本站观点,若有侵权或转载不当之处请从网站右下角联系我们处理。

博客园的相关资料:http://kb.cnblogs.com/zt/memcached/ 缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。此时Memcached或许是你想要的。Memcached是什么?Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached能缓存什么?通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。Memcached快么?非 常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对 内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。Danga Interactive为提升Danga Interactive的速度研发了Memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这 些,是由一个由web服务器和数据库服务器组成的集群完成的。Memcached几乎完全放弃了任何数据都从数据库读取的方式,同时,它还缩短了用户查看 页面的速度、更好的资源分配方式,以及Memcache失效时对数据库的访问速度。Memcached的特点Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。Memcached的使用 一 Memcached服务器端的安装 (此处将其作为系统服务安装)  下载文件:memcached 1.2.1 for Win32 binaries (Dec 23, 2006)   1 解压缩文件到c:\memcached   2 命令行输入 'c:\memcached\memcached.exe -d install'    3 命令行输入 'c:\memcached\memcached.exe -d start' ,该命令启动 Memcached ,默认监听端口为 11211  通过 memcached.exe -h 可以查看其帮助二   .NET memcached client library   下载文件:https://sourceforge.net/projects/memcacheddotnet/    里面有.net1.1  和 .net2.0的两种版本  还有一个不错的例子。 三  应用   1 将Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll 等放到bin目录  2 引用Memcached.ClientLibrary.dll  3 代码 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 namespace Memcached.MemcachedBench 2 { 3     using System; 4     using System.Collections; 5  6     using Memcached.ClientLibrary; 7  8     public class MemcachedBench  9     {10         [STAThread]11         public static void Main(String[] args) 12         {13             string[] serverlist = { "10.0.0.131:11211", "10.0.0.132:11211" };14 15             //初始化池16             SockIOPool pool = SockIOPool.GetInstance();17             pool.SetServers(serverlist);18 19             pool.InitConnections = 3;20             pool.MinConnections = 3;21             pool.MaxConnections = 5;22 23             pool.SocketConnectTimeout = 1000;24             pool.SocketTimeout = 3000;25 26             pool.MaintenanceSleep = 30;27             pool.Failover = true;28 29             pool.Nagle = false;30             pool.Initialize();31 32             // 获得客户端实例33             MemcachedClient mc = new MemcachedClient();34             mc.EnableCompression = false;35 36             Console.WriteLine("------------测  试-----------");37             mc.Set("test", "my value");  //存储数据到缓存服务器,这里将字符串"my value"缓存,key 是"test"38 39             if (mc.KeyExists("test"))   //测试缓存存在key为test的项目40             {41                 Console.WriteLine("test is Exists");42                 Console.WriteLine(mc.Get("test").ToString());  //在缓存中获取key为test的项目43             }44             else45             {46                 Console.WriteLine("test not Exists");47             }48 49             Console.ReadLine();50 51             mc.Delete("test");  //移除缓存中key为test的项目52 53             if (mc.KeyExists("test"))54             {55                 Console.WriteLine("test is Exists");56                 Console.WriteLine(mc.Get("test").ToString());57             }58             else59             {60                 Console.WriteLine("test not Exists");61             }62             Console.ReadLine();63             64             SockIOPool.GetInstance().Shutdown();  //关闭池, 关闭sockets65         }66     }67 }  4 运行结果        后记: 是个不错的东西 ,使用起来也很方便,php ,ruby 的项目中用这个的很多,但是.net项目中用的较少(恕俺孤陋寡闻) 。希望有兴趣的朋友们 多多交流 。 看到页首了么各位兄弟? 不用我多说了吧,挥动您的鼠标 轻轻按下左键吧 from:http://www.cnblogs.com/zjneter/archive/2007/07/19/822780.html

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本站系公益性非盈利IT网站,本文由投稿者转载自互联网,文末已注明出处,其内容和图片版权归原作者所有,文中所述不代表本站观点,若有侵权或转载不当之处请从网站右下角联系我们处理。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部