分布式缓存系统Memcached简介与实践缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。此时Memcached或许是你想要的。 里面有.net1.1 和 .net2.0的两种版本 还有一个不错的例子。 三 应用 1 将Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll 等放到bin目录 1 namespace Memcached.MemcachedBench
4 运行结果 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 else 45 { 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 else 59 { 60 Console.WriteLine("test not Exists"); 61 } 62 Console.ReadLine(); 63 64 SockIOPool.GetInstance().Shutdown(); //关闭池, 关闭sockets 65 } 66 } 67 }
后记: 是个不错的东西 ,使用起来也很方便,php ,ruby 的项目中用这个的很多,但是.net项目中用的较少(恕俺孤陋寡闻) 。希望有兴趣的朋友们 多多交流 。 看到页首了么各位兄弟? 不用我多说了吧,挥动您的鼠标 轻轻按下左键吧 |
|