-
简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;
-
功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期;
-
各服务器间彼此无视:不在服务器间进行数据同步;
-
O(1)的执行效率
-
清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长;
1
2
3
4
5
6
7
8
9
10
11
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
add mykey 0 10 5 (增加数据)
hello (数据)
STORED
get mykey (获取数据)
VALUE mykey 0 5
hello (数据)
END
|
-
Page:分配给Slab的内存空间,默认是1MB。分配给Slab之后根据slab的大小切分成chunk。
-
Chunk:用于缓存记录的内存空间。
-
Slab Class:特定大小的chunk的组。
-
memcached根据收到的数据的大小,选择最适合数据大小的slab。
-
memcached中保存着slab内空闲chunk的列表,根据该列表选择chunk,然后将数据缓存于其中。
1
|
[root@memcache ~]
# memcached -f 2 -vv
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
slab class 1: chunk size 128 perslab 8192
slab class 2: chunk size 256 perslab 4096
slab class 3: chunk size 512 perslab 2048
slab class 4: chunk size 1024 perslab 1024
slab class 5: chunk size 2048 perslab 512
slab class 6: chunk size 4096 perslab 256
slab class 7: chunk size 8192 perslab 128
slab class 8: chunk size 16384 perslab 64
slab class 9: chunk size 32768 perslab 32
slab class 10: chunk size 65536 perslab 16
slab class 11: chunk size 131072 perslab 8
slab class 12: chunk size 262144 perslab 4
slab class 13: chunk size 524288 perslab 2
|
1
2
3
4
5
6
7
8
9
10
|
slab class 1: chunk size 88 perslab 11915
slab class 2: chunk size 112 perslab 9362
slab class 3: chunk size 144 perslab 7281
slab class 4: chunk size 184 perslab 5698
slab class 5: chunk size 232 perslab 4519
slab class 6: chunk size 296 perslab 3542
slab class 7: chunk size 376 perslab 2788
slab class 8: chunk size 472 perslab 2221
slab class 9: chunk size 592 perslab 1771
slab class 10: chunk size 744 perslab 1409
|
-
Linux
-
FreeBSD
-
Solaris (memcached 1.2.5以上版本)
-
Mac OS X
1
2
3
4
|
[root@memcache src]
# tar xf libevent-2.0.21-stable.tar.gz
[root@memcache src]
# cd libevent-2.0.21-stable
[root@memcache libevent-2.0.21-stable]
# ./configure --prefix=/usr/local/libevent
[root@memcache libevent-2.0.21-stable]
# make && make install
|
1
2
3
4
|
[root@memcache src]
# tar xf memcached-1.4.15.tar.gz
[root@memcache src]
# cd memcached-1.4.15
[root@memcache memcached-1.4.15]
# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
[root@memcache memcached-1.4.15]
# make && make install
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
[root@memcache ~]
# vim /etc/profile.d/memcache.sh
[root@memcache ~]
# cat /etc/profile.d/memcache.sh
export
PATH=$PATH:
/usr/local/memcached/bin/
[root@memcache ~]
# source /etc/profile
[root@memcache ~]
# memcached -h
memcached 1.4.15
-p <num> TCP port number to listen on (default: 11211)
-U <num> UDP port number to listen on (default: 11211, 0 is off)
-s <
file
> UNIX socket path to listen on (disables network support)
-a <mask> access mask
for
UNIX socket,
in
octal (default: 0700)
-l <addr> interface to listen on (default: INADDR_ANY, all addresses)
<addr> may be specified as host:port. If you don't specify
a port number, the value you specified with -p or -U is
used. You may specify multiple addresses separated by comma
or by using -l multiple
times
-d run as a daemon
-r maximize core
file
limit
-u <username> assume identity of <username> (only when run as root)
-m <num> max memory to use
for
items
in
megabytes (default: 64 MB)
-M
return
error on memory exhausted (rather than removing items)
-c <num> max simultaneous connections (default: 1024)
-k lock down all paged memory. Note that there is a
limit on how much memory you may lock. Trying to
allocate
more
than that would fail, so be sure you
set
the limit correctly
for
the user you started
the daemon with (not
for
-u <username> user;
under sh this is
done
with
'ulimit -S -l NUM_KB'
).
-
v
verbose (print errors
/warnings
while
in
event loop)
-vv very verbose (also print client commands
/reponses
)
-vvv extremely verbose (also print internal state transitions)
-h print this help and
exit
-i print memcached and libevent license
-P <
file
> save PID
in
<
file
>, only used with -d option
-f <factor> chunk size growth factor (default: 1.25)
-n <bytes> minimum space allocated
for
key+value+flags (default: 48)
-L Try to use large memory pages (
if
available). Increasing
the memory page size could reduce the number of TLB misses
and improve the performance. In order to get large pages
from the OS, memcached will allocate the total item-cache
in
one large chunk.
-D <char> Use <char> as the delimiter between key prefixes and IDs.
This is used
for
per-prefix stats reporting. The default is
":"
(colon). If this option is specified, stats collection
is turned on automatically;
if
not,
then
it may be turned on
by sending the
"stats detail on"
command
to the server.
-t <num> number of threads to use (default: 4)
-R Maximum number of requests per event, limits the number of
requests process
for
a given connection to prevent
starvation (default: 20)
-C Disable use of CAS
-b Set the backlog queue limit (default: 1024)
-B Binding protocol - one of ascii, binary, or auto (default)
-I Override the size of each slab page. Adjusts max item size
(default: 1mb, min: 1k, max: 128m)
-o Comma separated list of extended or experimental options
- (EXPERIMENTAL) maxconns_fast: immediately close new
connections
if
over maxconns limit
- hashpower: An integer multiplier
for
how large the
hash
table should be. Can be grown at runtime
if
not big enough.
Set this based on
"STAT hash_power_level"
before a
restart.
|
1
|
[root@memcache ~]
# memcached -h
|
-
-p TCP监听端口 (default: 11211)
-
-U UDP 监听端口 (default: 11211, 0 is off)
-
-s UNIX socket监听路径,不支持网络
-
-a UNIX socket访问掩码, 八进制 (default: 0700)
-
-l 监听的服务器IP地址 (default: all addresses)
-
-d 启动一个守护进程
-
-r 最大限度利用核心文件限制
-
-u 运行memcached用户
-
-m 最大的内存使用 (default: 64 MB)
-
-M 内存耗尽返回错误
-
-c 最大并发连接 (default: 1024)
-
-k 锁定所有分页内存
-
-v 输出警告和错误信息
-
-vv 同时打印客户端请求和返回信息
-
-vvv 打印内部状态转换信息
-
-i 打印memcached 和 libevent 版本信息
-
-P 设置保存pid文件, only used with -d option
-
-f 块大小增长倍数 (default: 1.25)
-
-n key+value+flags最小分配空间(default: 48)
-
-L 如何有效,尝试使用大内存页。增加内存页大小可以减少失误的TLB数量,提高性能。
-
-D 指定key和IDs的分隔符 default is “:” (colon). 如果指定此选项,统计信息收集自动开启;
-
-t 使用的线程数量 (default: 4)
-
-R 每个事件的最大请求数 (default: 20)
-
-C 禁止使用 CAS
-
-b 设置积压队列数限制 (default: 1024)、
-
-B 绑定协议 – one of ascii, binary, or auto (default)
-
-I 分配给每个slab页(default: 1mb, min: 1k, max: 128m)
-
-o 配置额外选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
[root@memcache ~]
# memcached -d -m 500 -u root -l 192.168.18.201 -c 256 -P /tmp/memcached.pid -vvv
slab class 1: chunk size 96 perslab 10922
slab class 2: chunk size 120 perslab 8738
slab class 3: chunk size 152 perslab 6898
slab class 4: chunk size 192 perslab 5461
slab class 5: chunk size 240 perslab 4369
slab class 6: chunk size 304 perslab 3449
slab class 7: chunk size 384 perslab 2730
slab class 8: chunk size 480 perslab 2184
slab class 9: chunk size 600 perslab 1747
slab class 10: chunk size 752 perslab 1394
slab class 11: chunk size 944 perslab 1110
slab class 12: chunk size 1184 perslab 885
slab class 13: chunk size 1480 perslab 708
slab class 14: chunk size 1856 perslab 564
slab class 15: chunk size 2320 perslab 451
slab class 16: chunk size 2904 perslab 361
slab class 17: chunk size 3632 perslab 288
slab class 18: chunk size 4544 perslab 230
slab class 19: chunk size 5680 perslab 184
slab class 20: chunk size 7104 perslab 147
slab class 21: chunk size 8880 perslab 118
slab class 22: chunk size 11104 perslab 94
slab class 23: chunk size 13880 perslab 75
slab class 24: chunk size 17352 perslab 60
slab class 25: chunk size 21696 perslab 48
slab class 26: chunk size 27120 perslab 38
slab class 27: chunk size 33904 perslab 30
slab class 28: chunk size 42384 perslab 24
slab class 29: chunk size 52984 perslab 19
slab class 30: chunk size 66232 perslab 15
slab class 31: chunk size 82792 perslab 12
slab class 32: chunk size 103496 perslab 10
slab class 33: chunk size 129376 perslab 8
slab class 34: chunk size 161720 perslab 6
slab class 35: chunk size 202152 perslab 5
slab class 36: chunk size 252696 perslab 4
slab class 37: chunk size 315872 perslab 3
slab class 38: chunk size 394840 perslab 2
slab class 39: chunk size 493552 perslab 2
slab class 40: chunk size 616944 perslab 1
slab class 41: chunk size 771184 perslab 1
slab class 42: chunk size 1048576 perslab 1
<26 server listening (auto-negotiate)
<27 send buffer was 229376, now 268435456
<27 server listening (udp)
<27 server listening (udp)
<27 server listening (udp)
<27 server listening (udp)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@memcache ~]
# netstat -ntulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID
/Program
name
tcp 0 0 192.168.18.201:11211 0.0.0.0:* LISTEN 8086
/memcached
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1026
/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1103
/master
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 1137
/sshd
tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 8044
/sshd
tcp 0 0 :::22 :::* LISTEN 1026
/sshd
tcp 0 0 ::1:25 :::* LISTEN 1103
/master
tcp 0 0 ::1:6010 :::* LISTEN 1137
/sshd
tcp 0 0 ::1:6011 :::* LISTEN 8044
/sshd
udp 0 0 192.168.18.201:11211 0.0.0.0:* 8086
/memcached
|
1
|
[root@memcache ~]
# yum install -y telnet
|
1
2
3
4
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
|
1
2
3
4
5
6
7
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
add mykey 0 10 5
hello
STORED
|
1
2
3
4
|
get mykey
VALUE mykey 0 5
hello
END
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
[root@memcache ~]
# vim /etc/init.d/memcached
#!/bin/bash
#
# Init file for memcached
#
# chkconfig: - 86 14
# description: Distributed memory caching daemon
#
# processname: memcached
# config: /etc/sysconfig/memcached
.
/etc/rc
.d
/init
.d
/functions
## Default variables
PORT=
"11211"
USER=
"nobody"
MAXCONN=
"1024"
CACHESIZE=
"64"
OPTIONS=
""
RETVAL=0
prog=
"/usr/local/memcached/bin/memcached"
desc=
"Distributed memory caching"
lockfile=
"/var/lock/subsys/memcached"
start() {
echo
-n $
"Starting $desc (memcached): "
daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE $OPTIONS
RETVAL=$?
echo
[ $RETVAL -
eq
0 ] &&
touch
$lockfile
return
$RETVAL
}
stop() {
echo
-n $
"Shutting down $desc (memcached): "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -
eq
0 ] &&
rm
-f $lockfile
return
$RETVAL
}
restart() {
stop
start
}
reload() {
echo
-n $
"Reloading $desc ($prog): "
killproc $prog -HUP
RETVAL=$?
echo
return
$RETVAL
}
case
"$1"
in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
[ -e $lockfile ] && restart
RETVAL=$?
;;
reload)
reload
;;
status)
status $prog
RETVAL=$?
;;
*)
echo
$
"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=1
esac
|
1
|
[root@memcache ~]
# chmod +x /etc/init.d/memcached
|
1
2
3
4
|
[root@memcache ~]
# chkconfig --add memcached
[root@memcache ~]
# chkconfig memcached on
[root@memcache ~]
# chkconfig memcached --list
memcached 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@memcache ~]
# killall memcached
[root@memcache ~]
# service memcached start
Starting Distributed memory caching (memcached): [确定]
[root@memcache ~]
# netstat -ntulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID
/Program
name
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 8251
/memcached
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1026
/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1103
/master
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 1137
/sshd
tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 8044
/sshd
tcp 0 0 :::11211 :::* LISTEN 8251
/memcached
tcp 0 0 :::22 :::* LISTEN 1026
/sshd
tcp 0 0 ::1:25 :::* LISTEN 1103
/master
tcp 0 0 ::1:6010 :::* LISTEN 1137
/sshd
tcp 0 0 ::1:6011 :::* LISTEN 8044
/sshd
udp 0 0 0.0.0.0:11211 0.0.0.0:* 8251
/memcached
udp 0 0 :::11211 :::* 8251
/memcached
|
1
2
3
4
5
6
|
[root@memcache ~]
# vim /etc/sysconfig/memcached
PORT=
"11211"
USER=
"nobody"
MAXCONN=
"1024"
CACHESIZE=
"128"
OPTIONS=
""
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
stats
STAT pid 8251
STAT uptime 852
STAT
time
1378284537
STAT version 1.4.15
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 0.032994
STAT rusage_system 0.033994
STAT curr_connections 10
STAT total_connections 11
STAT connection_structures 11
STAT reserved_fds 20
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 7
STAT bytes_written 0
STAT limit_maxbytes 67108864
#大家可以看到,现在的内存限制是64M
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
END
|
1
2
3
|
[root@memcache ~]
# service memcached restart
Shutting down Distributed memory caching (memcached): [确定]
Starting Distributed memory caching (memcached): [确定]
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
stats
STAT pid 8279
#进程ID
STAT uptime 8000
#服务器运行秒数
STAT
time
1378284623
#服务器当前unix时间戳
STAT version 1.4.15
#服务器版本
STAT libevent 2.0.21-stable
#libevent版本号
STAT pointer_size 64
#操作系统指针大小(这台服务器是64位的)
STAT rusage_user 0.000999
#进程累计用户时间
STAT rusage_system 0.003999
#进程累计系统时间
STAT curr_connections 10
#当前打开连接数
STAT total_connections 11
#曾打开的连接总数
STAT connection_structures 11
#服务器分配的连接结构数
STAT reserved_fds 20
#内部使用的FD数
STAT cmd_get 0
#执行get命令总数
STAT cmd_set 0
#执行set命令总数
STAT cmd_flush 0
#执行flush命令总数
STAT cmd_touch 0
#执行touch命令总数
STAT get_hits 0
#get命中次数
STAT get_misses 0
#get未命中次数
STAT delete_misses 0
#delete未命中次数
STAT delete_hits 0
#delete命中次数
STAT incr_misses 0
#incr未命中次数
STAT incr_hits 0
#incr命中次数
STAT decr_misses 0
#decr未命中次数
STAT decr_hits 0
#decr命中次数
STAT cas_misses 0
#cas未命中次数
STAT cas_hits 0
#cas命中次数
STAT cas_badval 0
#使用擦拭次数
STAT touch_hits 0
#touch命中次数
STAT touch_misses 0
#touch未命中次数
STAT auth_cmds 0
#认证处理的次数
STAT auth_errors 0
#认证失败次数
STAT bytes_read 7
#读取字节总数
STAT bytes_written 0
#写入字节总数
STAT limit_maxbytes 134217728
#现在的内存大小为128M
STAT accepting_conns 1
#目前接受的新接数
STAT listen_disabled_num 0
#失效的监听数
STAT threads 4
#当前线程数
STAT conn_yields 0
#连接操作主支放弃数目
STAT hash_power_level 16
#hash等级
STAT hash_bytes 524288
#当前hash表等级
STAT hash_is_expanding 0
#hash表扩展大小
STAT bytes 0
#当前存储占用的字节数
STAT curr_items 0
#当前存储数据总数
STAT total_items 0
#启动以来存储的数据总数
STAT expired_unfetched 0
#已过期但未获取的对象数目
STAT evicted_unfetched 0
#已驱逐但未获取的对象数目
STAT evictions 0
#LRU释放的对象数目
STAT reclaimed 0
#用已过期的数据条目来存储新数据的数目
END
|
<command name> <key> <flags> <exptime> <bytes><data block>
-
<command name> 操作命令:set/add/replace……
-
<key> 缓存的键值
-
<flags> 客户机使用它存储关于键值对的额外信息
-
<exptime> 缓存过期时间 单位为秒 0 表示永远存储
-
<bytes> 缓存值的字节数
-
<data block> 数据块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
set
mykey 0 0 3
100
STORED
get mykey
VALUE mykey 0 3
100
END
delete mykey
DELETED
get mykey
END
|
1
2
3
4
5
6
7
8
9
10
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
add mykey 0 0 4
#第一次添加成功
test
STORED
add mykey 0 0 4
#第二次添加失败
test
NOT_STORED
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
replace testkey 0 0 2
#元素不存在替换失败
11
NOT_STORED
add testkey 0 0 2
22
STORED
get testkey
VALUE testkey 0 2
22
END
replace testkey 0 0 3
#元素存在替换成功
100
STORED
get testkey
VALUE testkey 0 3
100
END
|
1
2
3
4
5
6
7
8
|
get mykey
VALUE mykey 0 3
100
END
delete mykey
DELETED
get mykey
END
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
set
mykey 0 0 2
10
STORED
set
testkey 0 0 2
20
STORED
get mykey testkey
VALUE mykey 0 2
10
VALUE testkey 0 2
20
END
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
set
mykey 0 0 2
10
STORED
set
testkey 0 0 2
20
STORED
get mykey testkey
VALUE mykey 0 2
10
VALUE testkey 0 2
20
END
gets mykey testkey
VALUE mykey 0 2 5
10
VALUE testkey 0 2 6
20
END
set
testkey 0 0 2
30
STORED
gets mykey testkey
VALUE mykey 0 2 5
10
VALUE testkey 0 2 7
30
END
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
gets mykey
VALUE mykey 0 2 5
10
END
cas mykey 0 0 2 6
50
EXISTS
cas mykey 0 0 2 5
50
STORED
gets mykey
VALUE mykey 0 2 8
50
END
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
set
age 0 0 2
10
STORED
get age
VALUE age 0 2
10
END
incr age 2
12
incr age 2
14
get age
VALUE age 0 2
14
END
decr age 1
13
get age
VALUE age 0 2
13
END
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
stats
STAT pid 8279
#进程ID
STAT uptime 8000
#服务器运行秒数
STAT
time
1378284623
#服务器当前unix时间戳
STAT version 1.4.15
#服务器版本
STAT libevent 2.0.21-stable
#libevent版本号
STAT pointer_size 64
#操作系统指针大小(这台服务器是64位的)
STAT rusage_user 0.000999
#进程累计用户时间
STAT rusage_system 0.003999
#进程累计系统时间
STAT curr_connections 10
#当前打开连接数
STAT total_connections 11
#曾打开的连接总数
STAT connection_structures 11
#服务器分配的连接结构数
STAT reserved_fds 20
#内部使用的FD数
STAT cmd_get 0
#执行get命令总数
STAT cmd_set 0
#执行set命令总数
STAT cmd_flush 0
#执行flush命令总数
STAT cmd_touch 0
#执行touch命令总数
STAT get_hits 0
#get命中次数
STAT get_misses 0
#get未命中次数
STAT delete_misses 0
#delete未命中次数
STAT delete_hits 0
#delete命中次数
STAT incr_misses 0
#incr未命中次数
STAT incr_hits 0
#incr命中次数
STAT decr_misses 0
#decr未命中次数
STAT decr_hits 0
#decr命中次数
STAT cas_misses 0
#cas未命中次数
STAT cas_hits 0
#cas命中次数
STAT cas_badval 0
#使用擦拭次数
STAT touch_hits 0
#touch命中次数
STAT touch_misses 0
#touch未命中次数
STAT auth_cmds 0
#认证处理的次数
STAT auth_errors 0
#认证失败次数
STAT bytes_read 7
#读取字节总数
STAT bytes_written 0
#写入字节总数
STAT limit_maxbytes 134217728
#现在的内存大小为128M
STAT accepting_conns 1
#目前接受的新接数
STAT listen_disabled_num 0
#失效的监听数
STAT threads 4
#当前线程数
STAT conn_yields 0
#连接操作主支放弃数目
STAT hash_power_level 16
#hash等级
STAT hash_bytes 524288
#当前hash表等级
STAT hash_is_expanding 0
#hash表扩展大小
STAT bytes 0
#当前存储占用的字节数
STAT curr_items 0
#当前存储数据总数
STAT total_items 0
#启动以来存储的数据总数
STAT expired_unfetched 0
#已过期但未获取的对象数目
STAT evicted_unfetched 0
#已驱逐但未获取的对象数目
STAT evictions 0
#LRU释放的对象数目
STAT reclaimed 0
#用已过期的数据条目来存储新数据的数目
END
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
set
mykey 0 0 2
10
STORED
set
age 0 0 2
20
STORED
get mykey age
VALUE mykey 0 2
10
VALUE age 0 2
20
END
flush_all
OK
get mykey age
END
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
[root@memcache ~]
# telnet 192.168.18.201 11211
Trying 192.168.18.201...
Connected to 192.168.18.201.
Escape character is
'^]'
.
set
age 0 0 2
13
STORED
get age
VALUE age 0 2
13
END
append age 0 0 6
111111
STORED
get age
VALUE age 0 8
13111111
END
prepend age 0 0 6
111111
STORED
get age
VALUE age 0 14
11111113111111
END
|