Memcached是“分布式”的内存对象缓存系统,那么不须要“分布”的、不须要共享的或者干脆规模小到只有一台服务器的应用,Memcached不会带来任何好处,相反还会拖慢系统效率,由于网络链接一样须要资源,若是只是本地级缓存,使用Memcached是很是不划算的。前端
Memcached在不少时候都是做为数据库前端Cache使用的。由于它比数据库少了不少SQL解析、磁盘操做等开销,并且它是使用内存来管理数据的,因此它能够提供比直接读取数据库更好的性能。在大型系统中,访问一样的数据是很频繁的,Memcached能够大大下降数据库压力,使系统执行效率提高。另外,Memcached也常常做为服务器之间数据共享的存储媒介。数据库
Memcached使用内存管理数据,因此它是易失的,当服务器重启或者Memcached进程终止,数据便会丢失,因此Memcached不能用来持久保存数据。不少人错误地理解,认为Memcached的性能很是好,好到了内存和硬盘的对比程度,其实Memcached使用的内存并不会获得成百上千的读写速度提升,它的实际瓶颈在于网络链接。它和使用磁盘的数据库系统相比,好处在于它自己很是“轻”,由于没有过多的开销和直接的读写方式,它能够轻松应付很是大的数据交换量,因此常常会出现两条千兆带宽都满负荷了,Memcached进程自己并不占用多少CPU资源的状况。编程
从使用的角度来讲,Memcached针对Asp.net的API就像和内置的API同样。开发人员很容易使用Memcached,仅仅经过在代码中查找和替换便可实现。windows
一、下载windows版memcached缓存
二、打开DOS,进入memcached.exe所在目录服务器
三、输入命令:memcached.exe -d install网络
memcached -d install -l 127.0.0.1 -m 1024 -c 2048并发
参数说明app
四、 守护进程方式启动:memcached.exe -m 32 -d startsocket
五、 指定端口启动:memcached.exe –p 33000 -m 32
能够启动多个服务,命令行窗口关闭则服务中止。
测试Memcached的步骤以下:
1).使用telnet指定访问localhost的11211端口,11211为Memcached的默认监听剪口。
telnet localhost 11211
2).输入stats,回车执行,检查Memcached服务的状态。
3).quit命令退出。
在Asp.net中访问Memcached的步骤以下:
一、到Codeplex中下载Memcached Provider:http://memcachedproviders.codeplex.com/
二、在网站项目中引用Enyim.Caching.dll,MemcachedProviders.dll以及Log4net.dll。
三、在配置文件中“注册自定义缓存提供器”,代码以下:
<section name="cacheProvider" type="MemcachedProviders.Cache.CacheProviderSection,MemcachedProviders" allowDefinition="MachineToApplication" restartOnExternalChanges="true" /> <sectionGroup name="enyim.com"> <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection,Enyim.Caching" /> </sectionGroup> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
四、分别配置三个Section.
首先是enyim.com的配置信息:
<enyim.com> <memcached> <servers> <!-- 本身的服务器IP放这里 --> <add address="127.0.0.1" port="11211" /> </servers> <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" /> </memcached> </enyim.com>
而后是cacheProvider的配置信息:
<cacheProvider defaultProvider="MemcachedCacheProvider"> <providers> <add name="MemcachedCacheProvider" type="MemcachedProviders.Cache.MemcachedCacheProvider,MemcachedProviders" keySuffix="_MySuffix_" defaultExpireTime="2000" /> </providers> </cacheProvider>
最后是Log4Net的配置信息:
<log4net> <!-- 定义一些追加输出程序 --> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <!-- <threshold value="OFF"> --> <!-- 根据根目录信息,添加输出程序与设置默认优先级 --> <root> <priority value="WARN"/> <appender-ref ref="ConsoleAppender"> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="WARN"/> <levelMax value="FATAL"/> </filter> </appender-ref> </root> </log4net>
对Memcached的基本操做步骤以下:
1.引用MemcachedProviders的命名空间
using MemcachedProviders.Cache;
2.在Memcached中保存信息
DistCache.Add(stringKey,objValue);
3.从Memcached中读取信息。
DistCache.Get(strKey);
4.删除信息
DistCache.Remove(cacheKey);
5.清除全部信息
DistCache.RemoveAll();
不知道是否是Memcached版本的问题,致使Add。没法成功,看来仍是要了解一下套接字编程,本身搞了。