一:连接命令
在windows下的cmd或者Linux执行
telnet 127.0.0.1 11211 (如果此处报错”telnet不是内部或外部命令”,一定是没有安装telnet客户端请见下文如何开启telnet客户端)
就可以连接上memcached。
[root@zhang1 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
执行quit退出连接。
quit
Connection closed by foreign host.
[root@zhang1 ~]#
二:存储命令
举例:
1:set添加或者编辑
set a 0 0 4
8888
STORED
上述命令的意思是:设置a=8888
当数据不存在的时候,可以执行add命令,如果数据已经存在,返回NOT_STORED
add a 0 0 4
8888
NOT_STORED
2:get获取
get a
VALUE a 0 4
8888
END
3:delete删除
delete a
DELETED
4:replace替换
replace a 0 0 4
9999
STORED
如果key不存在,则回显
NOT_STORED
三:其他命令
flush_all清除所有缓存
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
关于报错”telnet不是内部或外部命令”的解决办法:
(Windows 7或以上的系统)
一定是没有安装telnet客户端请见下文如何开启telnet客户端
1.打开“控制面板”>“添加删除程序”>“打开或关闭Windows功能”>勾选“Telnet客户端”确定即可;
2.无需重启,再次运行 “telnet” 或 “telnet 127.0.0.1:11211” 即可
备注:关闭Telnet客户端,要重启以后才会生效;
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
一.存储命令
存储命令的格式:
<command name> <key> <flags> <exptime> <bytes> <data block>
参数说明:
<command name> | 操作命令:set/add/replace |
<key> | 缓存的键值 |
<flags> | 客户机使用它存储关于键值对的额外信息 |
<exptime> | 缓存过期时间 单位为秒 0 表示永远存储 |
<bytes> | 缓存值的字节数 |
<data block> | 数据块 |
1.添加值命令
(1) 无论如何都添加或更新的set 命令 (值不存在则添加 存在则更新) set 设置后可以用get命令获取值 也可以使用delete命令删除该值
[root@zhang2]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set test_key 0 0 3
100
STORED
get test_key
VALUE test_key 0 3
100
END
delete test_key
DELETED
get test_key
END
(2)只有数据不存在时添加值的add命令
[root@zhang2]# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. add zhang 0 0 1 //第一次添加 成功 q STORED add zhang 0 0 1 //第二次添加 失败 q NOT_STORED
(3)只有数据存在时替换的replace命令
[root@zhang2]# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. replace zhang_t 0 0 2 //replace 不存在的元素 失败 22 NOT_STORED add zhang_t 0 0 2 12 STORED get zhang_t VALUE zhang_t 0 2 12 END replace zhang_t 0 0 3 //replace 存在的值成功 200 STORED get zhang_t //值被替换 VALUE zhang_t 0 3 200 END
2.删除命令 delete
get zhang_t VALUE zhang_t 0 3 200 END delete zhang_t DELETED get zhang_t END
二 读取命令
1.get 命令 获取一个键或多个键的值 多个键以空格分开
get zhang_t zhang VALUE zhang 0 1 q END set zhang_t 0 0 3 100 STORED get zhang_t zhang VALUE zhang_t 0 3 100 VALUE zhang 0 1 q END
2 .gets 命令比get返回的值多一个数字 用来判断数据是否发生过改变
gets zhang_t zhang VALUE zhang_t 0 4 185 1000 VALUE zhang 0 1 181 q END set zhang_t 0 29 4 1000 STORED gets zhang_t zhang VALUE zhang_t 0 4 186 1000 VALUE zhang 0 1 181 q END
3. cas 的意思是 check and set 的意思,只有当最后一个参数鹤gets获取的那个用来判断数据发生改变的那个值相同时才会存储成功,否则返回 exists
gets zhang
VALUE zhang 0 3 188
dff
END
cas zhang 0 0 3 189
kjf
EXISTS
cas zhang 0 0 3 188
kjf
STORED
gets zhang
VALUE zhang 0 3 189
kjf
END
4. 自曾(incr) 自减(decr)命令
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.stats 显示memcachd状态
stats STAT pid 1532 //进程id STAT uptime 348167 //服务运行秒数 STAT time 1372215144 //当前unix时间戳 STAT version 1.4.14 //服务器版本 STAT libevent 2.0.10-stable STAT pointer_size 32 //操作系统字大小 STAT rusage_user 3.997392 //进程累计用户时间 STAT rusage_system 2.258656 //进程累计系统时间 STAT curr_connections 5 //当前打开连接数 STAT total_connections 265 //链接总数 STAT connection_structures 7 //服务器分配的链接结构数 STAT reserved_fds 20 // STAT cmd_get 1911 //执行get命令次数 STAT cmd_set 195 //执行set命令次数 STAT cmd_flush 3 //执行flush命令次数 STAT cmd_touch 0 STAT get_hits 1708 //get命中次数 STAT get_misses 203 //get未命中次数 STAT delete_misses 11 //delete 未命中次数 STAT delete_hits 14 //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 2 //case 命中次数 STAT cas_badval 1 //使用擦拭次数 STAT touch_hits 0 STAT touch_misses 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 164108 //读取字节数 STAT bytes_written 1520916 //写入字节书 STAT limit_maxbytes 67108864 //分配的内存数 STAT accepting_conns 1 //目前接受的连接数 STAT listen_disabled_num 0 STAT threads 4 //线程数 STAT conn_yields 0 STAT hash_power_level 16 STAT hash_bytes 262144 STAT hash_is_expanding 0 STAT expired_unfetched 4 STAT evicted_unfetched 0 STAT bytes 23995 //存储字节数 STAT curr_items 31 //item个数 STAT total_items 189 //item总数 STAT evictions 0 //为获取空间删除的item个数 STAT reclaimed 17 END
2.flush_all 清空所有项目
flush_all
OK
3.后续追加append和prepend前面插入命令
get age VALUE age 0 2 13 END append age 0 3 ERROR 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
该命令有一个可选的数字参数。它总是执行成功,服务器会发送 “OK\r\n” 回应。它的效果是使已经存在的项目立即失效(缺省),或在指定的时间后。此后执行取回命令,将不会有任何内容返回(除非重新存储同样的键名)。 flush_all 实际上没有立即释放项目所占用的内存,而是在随后陆续有新的项目被储存时执行(这是由memcached的懒惰检测和删除机制决定的)。
flush_all 效果是它导致所有更新时间早于 flush_all 所设定时间的项目,在被执行取回命令时命令被忽略。
memecached还有其他命令 ,这里只是平时我们工作中经常用到的一些,以此文章记录备用。