1.    MemCache 是一个高性能的分布式的内存对象缓存系统,通过内存里维护一个巨大的hash表,它能够用来存储各种格式的数据,包括图像,视频,文件记忆数据库检索的结果等。简单的说就是将数据调到内存中,然后从内存中读取,从而大大提高读取速度。

memCache danga 的一个项目,最早是livejournal服务的,最初为了加速livejournal访问速度而开发的,后来被很多大型的网站采用。

Memcache 是以守护程序方式运行于一个或多个服务器中,随时会受到客户端的链接和操作。

使用memcache的网站一般流量都比较大,为了缓解数据库的压力,让memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够迅速的进行存取,那么一般的焦点就是集中在如何分担数据库压力和进行分布式,毕竟单台memcache的内存容量是有限的。

 [ 分布式应用]

  Memcache本来支持分布式,我们客户端稍加改造,更好的支持。我们的key可以适当进行有规律的封装,比如以user为主的网站来说,每个用户都有UserID,那么可以按照固定的ID来进行提取和存取,比如1开头的用户保存在第一台Memcache服务器上,以2开头的用户的数据保存在第二台Mecache服务器上,存取数据都先按照User ID来进行相应的转换和存取。

但是这个有缺点,就是需要对User ID进行判断,如果业务不一致,或者其他类型的应用,可能不是那么合适,那么可以根据自己的实际业务来进行考虑,或者去想更合适的方法。

  [ 减少数据库压力]

这个算是比较重要的,所有的数据基本上都是保存在数据库当中的,每次频繁的存取数据库,导致数据库性能急剧下降,无法同时服务更多的用户,比如MySQL,特别频繁的锁表,那么让Memcache来分担数据库的压力吧。我们需要一种改动比较小,并且能够不会大规模改变前端的方式来进行改变目前的架构。

详见http://baike.baidu.com/view/1193094.html   

 

2.     目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力,起初编写它可能是为了提高动态网页应用,为了减轻数据库检索的压力,来做的这个缓存系统。它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统, 这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!基于memcache作者对分布式cache的理解和解决方案。 memcache完全可以用到其他地方 比如分布式数据库 分布式计算等领域

 

3.    .net 下的cachememcache 的比较

通过这个对比测试我们可以看出内建的Cache比使用Memcached要快出约130,但是从总体速度上来看Memcached并不慢,这两种方式可以在项目中有选择性地结合使用可以产生很棒的效果.并且Memcached可使用的内存数量要多得多,同时也可以做集群避免单点问题.

http://developer.51cto.com/art/200908/144426.html

 

4.    windows.NET 平台下使用memcached

首先windows平台下的memcached 版本下载地址:

 

http://download.csdn.net/detail/dinglang_2009/3733784

下载好了Memcached之后,解压到任意目录下,例如:

1. 解压缩文件到c:/memcached 进入cmd控制台(该不会有人问我这个cmd要怎么进去吧?)
2.
命令行输入 'c:/memcached/memcached.exe -d install' --安装 Memcached
3.
命令行输入 'c:/memcached/memcached.exe -d start' ,该命令启动 Memcached ,默认监听端口为 11211

其实可以通过 memcached.exe -p 11121 -m 64 指定它的监听端口是11121(这是它的默认端口,可以指定为其它大于1024的端口,因为小于1024的端口已经有了默认指定),最大使用内存为64m,如果启用了Windows防火墙,切记要在防火墙上打开这个端口。

:通过 memcached.exe -h 可以查看其帮助 这里不多做介绍了

 

启动成功之后,在客户端还可以通过telnet来查看和操作Memcached,前提是服务器端和客户端都支持Telnet协议,在Windows7Windows2008中基于安全性的考虑,默认都不支持,需要在控制面板中安装和启用。(具体的操作我就不说了)

telnet localhost 11121
连接之后会出现一个命令行窗口,在这个命令行窗口中输入"stats"就可以看到当前Memcached的状态,如下图所示:

 

启动并配置好Memcached的服务端之后呢?我们下面该准备基于.NET平台的客户端了:

据我总结,大概常见的有三四种吧。必要的类库或者源码,我都将提供给大家下载。

1.NET memcached client library

Memcached .NET客户端的类库,目前大概只支持.NET1.0.NET2.0,笔者没仔细研究这个,估计这个已经过时啦。

2enyim.com Memcached Client

源码地址:点击下载源码 (开源项目,可提供研究学习)

3Memcached Providers

下载地址:点击下载

Memcached Providers的官网上有一份PDF的文档,是教你怎么配置的。英语不好的童鞋,可以直接参考我的配置(稍后会讲解)。

4) BeIT Memcached

这个笔者没用过,不做讲解了

 

下载完成,解压后会发现,enyim.com Memcached Client中,还包含了著名的Log4net日志框架。而Memcached Providers中其实包含了Enyim.Caching.dll,也包含了Log4netDLLMemcached Providers更强大,是对enyim.com Memcached Client的又一次封装和扩展。当然,使用和配置起来也同样简单,方便,只是对于一些负责的操作和处理方面,功能更强大一些。

如果只是简单的应用,推荐直接使用enyim.com Memcached Client。除了添加必要的Enyim.Caching.dll引用,还需要修改应用程序的配置文件。

详见:http://blog.csdn.net/dinglang_2009/article/details/6917794