MemCache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
今天学习下MemCached在windows 服务器上的使用方法。
我这里下载的1.2.6的版本,这个版本网上介绍也比较多,相对稳定性。所以我这里也是以这个版本来安装学习的。
安装
先下载MemCache-1.2.6,解压到d:\memcache目录下。
按Win+R,输入cmd,进入命令行模式。
依次输入命令:d: 、 cd memcache ,将当前目录定位到d:\memcache>,
MemCache常用的几条命令:
安装:memcache.exe -d install
卸载:memcache.exe -d unstall
启动:memcache.exe -d start
停止:memcache.exe -d stop
memcache的默认端口是11211,默认内存大小是64M,如果需要修改这二项参数使用下面这条命令:
memcache.exe -p 10000 -m 512 -d start
详细参数:
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
在终端中操作MemCached服务
连接到Memcache控制台:telnet ServerIP 11211
打印当前Memcache服务器状态:stats
stats统计详细说明:
打印当前Memcache服务器Items(记录)的统计信息:stats items
打印当前Memcache服务器Slab(分区)及Chunk(块)的统计信息:stats slabs
打印指定Slab中的KEY列表(可用于遍历items,但效率较低,慎用!):stats cachedump SlabId Limit_num。显示结果:ITEM KeyName [ValueByteLength b; LastAccessTime s]。值得注意的是,经过测试确认:那个LastAccessTime并不是记录到期时间,而是最后一次的get时间,并且get之后,也不会自动延长expiry(到期时间)。
添加新记录:add KeyName 0 0 ValueByteLength [回车] ValueContent,其中第一个0是一个flag标志位,可以存储本条数据的一些额外数据,第二个0是数据过期时间,单位秒,0表示永不过期,下同
删除记录 : delete KeyName
添加或更新记录 : set KeyName 0 0 ValueByteLength [回车] ValueContent
更新记录 : replace KeyName 0 0 ValueByteLength [回车] ValueContent
说明:add只有在key不承在时起作用,replace只有在key承在时起作用,而set则是当key不承在时执行add,key承在时执行replace。
在asp.net中使用memcache
不管是在java、.net、php中,使用memcache需要下载一个memcache的客户端。
我这里使用是memcacheddotnet_clientlib-1.1.5这个客户端。
1、下载memcacheddotnet_clientlib-1.1.5,先添加引用。
2、在项目根目录的web.config文件中,在节点中添加:,如果有多台memcached服务器,用英文“,”隔开。
3、添加一个MemCachedHelper的帮助类,添加如下内容:
private static readonly MemcachedClient memcachedClient; static MemCachedHelper() { if(string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["memcachedServer"])) { throw new Exception("请在web.config的appsetting中配置memcached服务器信息!"); } string[] servers = ConfigurationManager.AppSettings["memcachedServer"].Split(new char[','], StringSplitOptions.RemoveEmptyEntries); //初始化池 SockIOPool pool = SockIOPool.GetInstance(); pool.SetServers(servers); 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 = new Memcached.ClientLibrary.MemcachedClient(); memcachedClient.EnableCompression = false; } public object Get(string key) { return memcachedClient.Get(key); } public void Set(string key, object objObject) { memcachedClient.Set(key, objObject); } public bool Set(string key, object objObject, DateTime exp) { memcachedClient.Set(key, objObject, exp); } public void Remove(string key) { memcachedClient.Delete(key); } public void RemoveAllCache() { memcachedClient.FlushAll(); }
需要使用memcache的地方只需要调用相应的方法即可。
附asp.net MemCacheDemo下载(vs2013+.net 4.5.1)。
memcache官网:http://memcached.org