Memcached教程(2)
Memcached命令入门
基础参数说明:
| 参数 | 说明 |
|---|---|
| key | 存储结构 key-value 中的key,作为标示查找缓存的值。 |
| flags | 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。 |
| exptime | 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) |
| bytes | 在缓存中存储的字节数(必须设置为存储值的长度,不然无法结束命令) |
| noreply(可选) | 该参数告知服务器不需要返回数据 |
| value | 存储的值(始终位于第二行)(可直接理解为key-value结构中的value) |
| unique_cas_token | 通过 gets 命令获取的一个唯一的64位值。 |
存储命令
add 命令
add 命令用于将value储在指定的key中。如果key已经存在,不会更新之前的value,并且响应 NOT_STORED。
语法格式如下:
add key flags exptime bytes [noreply]
value
实例:
set mykey 0 900 9
memcached
STORED
可以用get命令获取存入的值:
get mykey
会显示:
VALUE mykey 0 9
memcached
END
代表存入成功。
STORED是保存成功后Memcached返回的标识,如果失败则返回ERROR或者具体的错误信息。
set 命令
set 命令用于将value存储在指定的key中。如果key已经存在,将更新该key所对应的value,实现更新操作。
语法格式如下:
set key flags exptime bytes [noreply]
value
实例:
set mykey 0 900 9
memcached
STORED
replace 命令
replace 命令用于替换已经存在的key所对应的value。如果key不存在,则会替换失败,并且响应 NOT_STORED。
语法格式如下:
replace key flags exptime bytes [noreply]
value
实例:
replace mykey 0 900 10
memcached1
STORED
append 命令
append 命令用于向已经存在的key的value后面追加数据。
语法格式如下:
append key flags exptime bytes [noreply]
value
实例:
replace mykey 0 900 3
234
STORED
可以用get命令获取修改的值:
get mykey
VALUE mykey 0 13
memcached1234
END
prepend 命令
prepend 命令用于向已经存在的key的value前面追加数据。
语法格式如下:
prepend key flags exptime bytes [noreply]
value
实例:
replace mykey 0 900 2
ab
STORED
可以用get命令获取修改的值:
get mykey
VALUE mykey 0 15
abmemcached1234
END
CAS 命令
CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作
它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。
检查是通过cas_token参数进行的, 这个参数是Memcach指定给已经存在的元素的一个唯一的64位值。
语法格式如下:
cas key flags exptime bytes unique_cas_token [noreply]
value
要在 Memcached 上使用 CAS 命令,你需要从 Memcached 服务商通过 gets 命令获取令牌(token)。
gets 命令的功能类似于基本的 get 命令。两个命令之间的差异在于,gets 返回的信息稍微多一些:64 位的整型值非常像名称/值对的 "版本" 标识符。
实例步骤如下:
- 如果没有设置唯一令牌,则 CAS 命令执行错误。
- 如果键 key 不存在,执行失败。
- 添加键值对。
- 通过 gets 命令获取唯一令牌。
- 使用 cas 命令更新数据
- 使用 get 命令查看数据是否更新
实例:
cas mykey 0 900 3 2
abc
STORED
可能出现的输出信息:
| 信息 | 说明 |
|---|---|
| STORED | 保存成功。 |
| ERROR | 保存失败或语法错误。 |
| EXISTS | 在最后一次取值后另外一个用户也在更新该数据。 |
| NOT_FOUND | Memcached 服务上不存在该键值。 |
查找命令
get 命令
get 命令获取存储在 key中的 value,如果 key 不存在,则返回空。
语法格式如下:
get key
多个key的情况使用空格隔开:
get key1 key2 key3
实例:
get mykey
会显示:
VALUE mykey 0 9
memcached
END
如果key不存在输出:
END
gets 命令
gets 命令获取带有CAS令牌存的value ,如果 key 不存在,则返回空。
语法格式如下:
gets key
多个key的情况使用空格隔开:
gets key1 key2 key3
实例:
get mykey
会显示:
VALUE mykey 0 9 2
memcached
END
如果key不存在输出:
END
delete 命令
delete 命令用于删除已存在的key和对应的value。
语法格式如下:
delete key [noreply]
多个key的情况使用空格隔开:
delete key1 key2 key3
实例:
delete runoob
会显示:
DELETED
可能出现的输出信息:
| 信息 | 说明 |
|---|---|
| DELETED | 删除成功。 |
| ERROR | 删除失败或语法错误。 |
| NOT_FOUND | Memcached 服务上不存在该键值。 |
incr 命令
incr 命令用于对已存在的key的value进行自增操作。incr 命令操作的value必须是十进制的32位无符号整数。如果 key 不存在返回 NOT_FOUND,如果键的值不为数字,则返回 CLIENT_ERROR,其他错误返回 ERROR。
语法格式如下:
incr key increment_value
increment_value: 增加的数值。
实例:
set number 0 900 2
10
STORED
get number
VALUE number 0 2
10
END
incr number 5
15
get number
VALUE number 0 2
15
END
decr 命令
decr 命令用于对已存在的key的value进行自减操作。decr 命令操作的value必须是十进制的32位无符号整数。如果 key 不存在返回 NOT_FOUND,如果键的值不为数字,则返回 CLIENT_ERROR,其他错误返回 ERROR。
语法格式如下:
decr key decrement_value
decrement_value: 减少的数值。
实例:
get number
VALUE visitors 0 2
15
END
decr number 5
10
get number
VALUE number 0 1
10
END
统计命令
stats 命令
stats 命令用于返回统计信息例如 PID(进程号)、版本号、连接数等。
语法格式如下:
stats
实例:
stats
STAT pid 4348
STAT uptime 54705
STAT time 1470788200
STAT version 1.4.25 Ubuntu
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 2.240000
STAT rusage_system 2.172000
STAT curr_connections 5
STAT total_connections 7
STAT connection_structures 6
STAT reserved_fds 20
STAT cmd_get 10
STAT cmd_set 19
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 7
STAT get_misses 3
STAT delete_misses 0
STAT delete_hits 1
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 1144
STAT bytes_written 2039
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT bytes 78
STAT curr_items 1
STAT total_items 11
STAT expired_unfetched 2
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 4
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
END
下边详细解释每个状态项:
| 状态项 | 说明 |
|---|---|
| pid | memcache服务器进程ID |
| uptime | 服务器已运行秒数 |
| time | 服务器当前Unix时间戳 |
| version | memcache版本 |
| pointer_size | 操作系统指针大小 |
| rusage_user | 进程累计用户时间 |
| rusage_system | 进程累计系统时间 |
| curr_connections | 当前连接数量 |
| total_connections | Memcached运行以来连接总数 |
| connection_structures | Memcached分配的连接结构数量 |
| cmd_get | get命令请求次数 |
| cmd_set | set命令请求次数 |
| cmd_flush | flush命令请求次数 |
| get_hits | get命令命中次数 |
| get_misses | get命令未命中次数 |
| delete_misses | delete命令未命中次数 |
| delete_hits | delete命令命中次数 |
| incr_misses | incr命令未命中次数 |
| incr_hits | incr命令命中次数 |
| decr_misses | decr命令未命中次数 |
| decr_hits | decr命令命中次数 |
| cas_misses | cas命令未命中次数 |
| cas_hits | cas命令命中次数 |
| cas_badval | 使用擦拭次数 |
| auth_cmds | 认证命令处理的次数 |
| auth_errors | 认证失败数目 |
| bytes_read | 读取总字节数 |
| bytes_written | 发送总字节数 |
| limit_maxbytes | 分配的内存总大小(字节) |
| accepting_conns | 服务器是否达到过最大连接(0/1) |
| listen_disabled_num | 失效的监听数 |
| threads | 当前线程数 |
| conn_yields | 连接操作主动放弃数目 |
| bytes | 当前存储占用的字节数 |
| curr_items | 当前存储的数据总数 |
| total_items | 启动以来存储的数据总数 |
| evictions | LRU释放的对象数目 |
| reclaimed | 已过期的数据条目来存储新数据的数目 |
stats items 命令
stats items 命令用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)。
语法格式如下:
stats items
实例:
stats items
STAT items:1:number 1
STAT items:1:age 12512
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 3
STAT items:1:expired_unfetched 1
STAT items:1:evicted_unfetched 0
STAT items:1:crawler_reclaimed 0
STAT items:1:crawler_items_checked 0
STAT items:1:lrutail_reflocked 0
END
stats slabs 命令
stats slabs 命令用于显示各个slab的信息,包括chunk的大小、数目、使用情况等。
语法格式如下:
stats slabs
实例:
stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 1
STAT 1:free_chunks 10921
STAT 1:free_chunks_end 0
STAT 1:mem_requested 78
STAT 1:get_hits 7
STAT 1:cmd_set 15
STAT 1:delete_hits 1
STAT 1:incr_hits 0
STAT 1:decr_hits 0
STAT 1:cas_hits 0
STAT 1:cas_badval 0
STAT 1:touch_hits 0
STAT 4:chunk_size 192
STAT 4:chunks_per_page 5461
STAT 4:total_pages 1
STAT 4:total_chunks 5461
STAT 4:used_chunks 0
STAT 4:free_chunks 5461
STAT 4:free_chunks_end 0
STAT 4:mem_requested 0
STAT 4:get_hits 0
STAT 4:cmd_set 4
STAT 4:delete_hits 0
STAT 4:incr_hits 0
STAT 4:decr_hits 0
STAT 4:cas_hits 0
STAT 4:cas_badval 0
STAT 4:touch_hits 0
STAT active_slabs 2
STAT total_malloced 2097024
END
stats sizes 命令
stats sizes 命令用于显示所有item的大小和个数。该信息返回两列,第一列是 item 的大小,第二列是 item 的个数。
语法格式如下:
stats sizes
实例:
stats sizes
STAT 96 1
END
flush_all 命令
flush_all 命令用于用于清理缓存中的所有 key=>value 对。该命令提供了一个可选参数 time,用于在制定的时间后执行清理缓存操作。
语法格式如下:
flush_all [time] [noreply]
实例:
flush_all
OK
get mykey
END

浙公网安备 33010602011771号