博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

Posted on 2009-01-14 12:34  linFen  阅读(1241)  评论(0编辑  收藏  举报
一 Memcached服务器端的安装 (此处将其作为系统服务安装)

  下载文件:memcached 1.2.1 for Win32 binaries (Dec 23, 2006)

  1 解压缩文件到c:memcached

  2命令行输入 'c:memcachedmemcached.exe -d install'

  3 命令行输入 'c:memcachedmemcached.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 代码

1namespaceMemcached.MemcachedBench
2{
3  usingSystem;
4  usingSystem.Collections;
5
6  usingMemcached.ClientLibrary;
7
8  publicclassMemcachedBench
9  {
10    [STAThread]
11    publicstaticvoidMain(String[]args)
12    {
13      string[]serverlist={"10.0.0.131:11211","10.0.0.132:11211"};
14
15      //初始化池
16      SockIOPoolpool=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      MemcachedClientmc=newMemcachedClient();
34      mc.EnableCompression=false;
35
36      Console.WriteLine("------------测 试-----------");
37      mc.Set("test","myvalue"); //存储数据到缓存服务器,这里将字符串"myvalue"缓存,key是"test"
38
39      if(mc.KeyExists("test")) //测试缓存存在key为test的项目
40      {
41        Console.WriteLine("testisExists");
42        Console.WriteLine(mc.Get("test").ToString()); //在缓存中获取key为test的项目
43      }
44      else
45      {
46        Console.WriteLine("testnotExists");
47      }
48
49      Console.ReadLine();
50
51      mc.Delete("test"); //移除缓存中key为test的项目
52
53      if(mc.KeyExists("test"))
54      {
55        Console.WriteLine("testisExists");
56        Console.WriteLine(mc.Get("test").ToString());
57      }
58      else
59      {
60        Console.WriteLine("testnotExists");
61      }
62      Console.ReadLine();
63      
64      SockIOPool.GetInstance().Shutdown(); //关闭池,关闭sockets
65    }
66  }
67}

  4 运行结果

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

  后记: 是个不错的东西 ,使用起来也很方便,php ,ruby 的项目中用这个的很多,但是.net项目中用的较少(恕俺孤陋寡闻) 。希望有兴趣的朋友们 多多交流 。