Memcached的基本使用

时间 2017/11/23 21:53:42 加载中...

Memcached是开源的,高效的,内存对象缓存系统。说白了,就是搞缓存用的。用于提升网站性能。是提升网站性能的第一手段。


其官网地址为:http://memcached.org/,然而官网的安装版本只有Linux下面的,没有Windows下面的,

那Windows下面的可以去这里下载:

memcached-win64.zip

memcached-win32-1.4.4-14.zip


下载之后,如何安装呢?

Memcached是一个服务,通过命令来安装,以管理员身份启动cmd,转到memcached.exe文件夹下。

执行安装命令: memcached.exe -d install

安装成功之后,在【服务】里面就可以看到新增了一个Memached的服务。

image.png

将此服务启动起来,memcached就算安装好了。


memcached默认端口为 11211 ,可以通过以下命令来修改:

设置端口和内存:memcached.exe -p 11211 -m 64


安装好之后,可以使用telnet来查看和操作 memcached

连接命令: telnet localhost 11211

查看状态:stats

清除缓存:flush_all

查看所有的key:stats items


另外附一下 stats 命令下的各状态描述


pid:32u,服务器进程ID。

uptime:32u, 服务器运行时间,单位秒。

time :32u, 服务器当前的UNIX时间。

version :string, 服务器的版本号。

curr_items :32u, 服务器当前存储的内容数量 Current number of items stored by the server

total_items :32u, 服务器启动以来存储过的内容总数。

bytes :64u, 服务器当前存储内容所占用的字节数。

curr_connections :32u, 连接数量。

total_connections :32u, 服务器运行以来接受的连接总数。

connection_structures:32u, 服务器分配的连接结构的数量。

cmd_get :32u, 取回请求总数。

cmd_set :32u, 存储请求总数。

get_hits :32u, 请求成功的总次数。

get_misses :32u, 请求失败的总次数。

bytes_read :64u, 服务器从网络读取到的总字节数。

bytes_written :64u, 服务器向网络发送的总字节数。

limit_maxbytes :32u, 服务器在存储时被允许使用的字节总数。


.NET下如何使用?


.NET下推荐使用 EnyimMemcached ,去 https://github.com/enyim/EnyimMemcached 下载源代码来编译生成 Enyim.Caching.dll 文件,

此项目中也有一个Demo示例。另外,上面下载的 Memached 的安装包中也有一个 enyim client lib 目录,里面也有此文件。


下载此文件之后,引入到项目中

然后在配置文件中,添加如下配置

此配置放在configuration节点下,最好是第一个节点


<configSections>
    <sectionGroup name="enyim.com">
      <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
    </sectionGroup>
</configSections>
<enyim.com protocol="Binary"> 
    <memcached>
      <servers>
        <!-- put your own server(s) here-->
        <add address="127.0.0.1" port="11211" />

        <!--<clear />				
	    <add address="172.16.172.130" port="20002" />
	    <add address="172.16.172.130" port="20004" />
	    <add address="172.16.172.130" port="20006" />
	    <add address="172.16.172.130" port="20008" />-->
      </servers>
      <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
    </memcached>
</enyim.com>


代码中如何调用:


MemcachedClient mc = new MemcachedClient();

ServerStats stats = mc.Stats();

//存入key:d1 value:admin 的键值对
mc.Store(StoreMode.Set, "d1", "admin");

//存入key:d2 value:true 的键值对,缓存时间30min
mc.Store(StoreMode.Set, "d2", true, new TimeSpan(0, 30, 0));

User user = new User() { Id = 100, Accout = "admin100", Password = "000000", Name = "管理员100" };

//存入键值对的值为一个对象
mc.Store(StoreMode.Set, $"account_{user.Id}", user);
User obj = mc.Get($"account_{user.Id}");


注意:上面的 User 类必须可以序列化, 即使用 [Serializable] 来修改 User 类。

版权说明
作者:SQBER
文章来源:http://sqber.com/articles/memcached-basic-use.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。