MemCached在Windows Server 2008 R2服务器上的安装与使用

分类栏目:服务器

83

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