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

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

作者:戏水 2009-02-06 09:38:38

开发

前端

分布式 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。此时memcached或许是你想要的。

成都创新互联公司坚信:善待客户,将会成为终身客户。我们能坚持多年,是因为我们一直可值得信赖。我们从不忽悠初访客户,我们用心做好本职工作,不忘初心,方得始终。10余年网站建设经验成都创新互联公司是成都老牌网站营销服务商,为您提供成都网站设计、做网站、成都外贸网站建设公司、网站设计、H5场景定制、网站制作、品牌网站建设小程序设计服务,给众多知名企业提供过好品质的建站服务。

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. 代码

 namespace Memcached.MemcachedBench
 {
     using System;
     using System.Collections;
 
     using Memcached.ClientLibrary;
 
     public class MemcachedBench 
      {
          [STAThread]
         public static void Main(String[] args) 
          {
            string[] serverlist = { "10.0.0.131:11211", "10.0.0.132:11211" };
 
             //初始化池
              SockIOPool pool = SockIOPool.GetInstance();
              pool.SetServers(serverlist);
 
              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 MemcachedClient();
              mc.EnableCompression = false;
 
              Console.WriteLine("------------测   试-----------");
              mc.Set("test", "my value");  //存储数据到缓存服务器,这里将字符串"my value"缓存,key 是"test"
 
             if (mc.KeyExists("test"))   //测试缓存存在key为test的项目
             {
                  Console.WriteLine("test is Exists");
                  Console.WriteLine(mc.Get("test").ToString());  //在缓存中获取key为test的项目
              }
             else
              {
                  Console.WriteLine("test not Exists");
              }
 
              Console.ReadLine();
 
              mc.Delete("test");  //移除缓存中key为test的项目
 
            if (mc.KeyExists("test"))
              {
                  Console.WriteLine("test is Exists");
                  Console.WriteLine(mc.Get("test").ToString());
              }
             else
              {
                  Console.WriteLine("test not Exists");
              }
              Console.ReadLine();
             
              SockIOPool.GetInstance().Shutdown();  //关闭池, 关闭sockets
          }
      }
 }

4. 运行结果

分享标题:分布式缓存系统memcached简介与实践
标题来源:http://www.shufengxianlan.com/qtweb/news35/221135.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联