Getting Started

下载

下载地址,最新版本为1.4.22

安装

  • Debian/Ubuntu: apt-get install libevent-dev
  • Redhat/Centos: yum install libevent-devel

wget http://memcached.org/latest

tar -zxvf memcached-1.x.x.tar.gz

cd memcached-1.x.x

./configure && make && make test && sudo make install

启动

./memcached -d -m 1024 -l localhost -p 11211

这会以守护程序的形式启动 memcached(-d),为其分配 1GB 内存(-m 1024),并指定监听 localhost,即端口 11211。

连接到memcached

telnet localhost 11211

如果一切正常,则应该得到一个 telnet 响应,它会指示 Connected to localhost(已经连接到 localhost)。

常用命令说明

启动/结束 memcached -d -m 10 -u root -l localhost -p 11211 -c 256 -P /tmp/memcached.pid

  • -d 选项是启动一个守护进程,
  • -m 是分配给Memcache使用的内存数量,单位是MB,这里是10MB
  • -u 是运行Memcache的用户,这里是root
  • -l 是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址localhost
  • -p 是设置Memcache监听的端口,这里设置了12000,最好是1024以上的端口
  • -c 选项是最大运行的并发连接数,默认是1024,这里设置了256,按照服务器的负载量来设定
  • -P 是设置保存Memcache的pid文件
  • kill cat /tmp/memcached.pid

获取运行状态

  • echo stats nc localhost 11211
  • watch “echo stats nc localhost 11211” (实时状态)

客户端命令详解

9 个memcached客户端命令可以分为三类:基本、高级、管理

基本memcached客户端命令

set、add、replace、get、delete

  1. 前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令。

修改命令语法

command <key> <flags> <expiration time> <bytes>

<value>

修改命令参数说明

  • key 用于查找缓存值
  • flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
  • expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
  • bytes 在缓存中存储的字节点
  • value 存储的值(始终位于第二行)
set

set 命令用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。

add

仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。

replace

仅当键已经存在时,replace 命令才会替换缓存中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条 NOT_STORED 响应。

后两个基本命令get和delete的语法

command <key>

get
delete

高级memcached客户端命令

可以在memcached中使用的两个高级命令是gets和cas。gets和cas命令需要结合使用。使用这两个命令来确保不会将现有的名称/值对设置为新值(如果该值已经更新过)。

gets

gets命令的功能类似于基本的get命令。两个命令之间的差异在于,gets返回的信息稍微多一些:64位的整型值非常像名称/值对的“版本”标识符。

gets命令将返回一个额外的值,用于标识名称/值对。如果对此名称/值对执行另一个set命令,则gets 返回的额外值将会发生更改,以表明名称/值对已经被更新。

cas

cas(check和set)是一个非常便捷的memcached命令,用于设置名称/值对的值(如果该名称/值对在您上次执行gets后没有更新过)。它使用与 set 命令相类似的语法,但包括一个额外的值:gets返回的额外值。

从本质上说,同时使用 gets和 cas命令可以防止使用自上次读取后经过更新的名称/值对。

缓存管理命令

最后两个memcached命令用于监控和清理memcached实例。它们是stats和flush_all命令。

stats

stats 命令的功能正如其名:转储所连接的 memcached 实例的当前统计数据。

flush_all

flush_all 是最后一个要介绍的命令。这个最简单的命令仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则 flush_all 能提供很大的用处。

缓存性能

使用高级 memcached 命令来确定缓存的性能。

stats 命令用于调优缓存的使用。

有两种方法用于确定缓存的效率

方法一

需要注意的两个最重要的统计数据是get_hits和get_misses。这两个值分别指示找到名称/值对的次数(get_hits)和未找到名称/值对的次数(get_misses)。结合这些值,我们可以确定缓存的利用率如何。

初次启动缓存时,可以看到get_misses会自然地增加,但在经过一定的使用量之后,这些get_misses值应该会逐渐趋于平稳 — 这表示缓存主要用于常见的读取操作。

如果看到get_misses继续快速增加,而get_hits逐渐趋于平稳,则需要确定一下所缓存的内容是什么。可能缓存了错误的内容。

方法二

查看缓存的命中率(hit ratio)。缓存命中率表示执行get的次数与错过get的次数的百分比。要确定这个百分比,需要运行stats命令,用get_hits的数值除以cmd_gets。

在理想情况下,可能希望得到更高的百分比—比率越高越好。查看统计数据并不时测量它们可以很好地判定缓存策略的效率。