这篇文章主要介绍了在telnet下操作memcache详解,telnet下的memcache操作命令详解,需要的朋友可以参考下

在定位问题、测试等时候经常需要对memcache的数据进行一些操作,但是其本身没有自带的客户端,所以只能通过telnet来进行操作。

通过telnet连接memcache。

复制代码代码如下:
telnet 127.0.0.1 11211

memcache写入操作

telnet写入memcache命令格式

复制代码代码如下:
 <command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n

参数详解:

1.<command name> 可以是”set”, “add”, “replace”。

set:<key>不存在时添加,<key>存在时覆盖。
add:<key>不存在时添加,<key>存在时则会操作失败。
replace:<key>不存在时添加失败,<key>存在时替换数据

2.<key> 保存数据的key

3.<flags> 是一个16位的无符号的整数(以十进制的方式表示)。

该标志将和需要存储的数据一起存储,并在客户端get数据时返回。
客户可以将此标志用做特殊用途,此标志对服务器来说是透明的。

4.<exptime> 过期的时间。

0表示存储的数据永远不过时(但可被服务器算法:LRU 等替换)。
非0(unix时间),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。

5.<bytes> 需要存储的字节数(不包含最后的”\r\n”),当用户希望存储空数据时,可以为0

6.最后客户端需要加上”\r\n”作为”命令头”的结束标志。

7.<data block>\r\n

紧接着”命令头”结束之后就要发送数据块(即希望存储的数据内容),最后加上”\r\n”作为此次通讯的结束。

telnet响应命令

当以上数据发送结束之后,服务器将返回一个应答。可能有如下的情况:

1.STORED\r\n:表示存储成功

2.NOT_STORED\r\n: 表示存储失败,但是该失败不是由于错误。
> 通常这是由于”add”或者”replace”命令本身的要求所引起的,或者该项在删除队列之中。

示例

复制代码代码如下:
set key 32 0 10\r\n
helloworld\r\n
STORED\r\n

获取Key&Value

获取命令格式

复制代码代码如下:
get <key>*\r\n

参数详解:
1.<key>*: 表示一个或者多个key(以空格分开)
2.\r\n:命令结束

响应结果

服务器端将返回0个或者多个的数据项。每个数据项都是由一个文本行和一个数据块组成。当所有的数据项都接收完毕将收到END\r\n每一项的数据结构:

复制代码代码如下:
VALUE <key> <flags> <bytes>\r\n
<data block>\r\n

参数详解:
1.<key> 希望得到存储数据的key
2.<falg> 发送set命令时设置的标志项
3.<bytes>发送数据块的长度(不包含”\r\n”)
4.\r\n 文本行的结束标志
5.<data block> 希望接收的数据项。
6.\r\n 接收一个数据项的结束标志。

PS:如果有些key出现在get命令行中但没有返回相应的数据,这意味着服务器中不存在改项,可能是超时了,或者被删除了.

示例

复制代码代码如下:
get key
VALUE key 32 10
helloworld
END

删除KeyValue:

复制代码代码如下:
delete <key> <time>\r\n

参数详解:
1.<key> 需要被删除数据的key
2.<time> 客户端希望服务器将该数据删除的时间(unix时间或者从现在开始的秒数)
3.\r\n命令头的结束

检查Memcache服务器状态

复制代码代码如下:
stats\r\n

在这里可以看到memcache的获取次数,当前连接数,写入次数,已经命中率等;

复制代码代码如下:
pid : 进程id
uptime :总的运行时间,秒数
time : 当前时间
version : 版本号
……
curr_items : 当前缓存中的KeyValue数量
total_items : 曾经总共经过缓存的KeyValue数量
bytes : 所有的缓存使用的内存量
curr_connections 当前连接数
….
cmd_get : 总获取次数
cmd_set : 总的写入次数
get_hits : 总的命中次数
miss_hits :  获取失败次数
…..
bytes_read : 总共读取的流量字节数
bytes_written : 总的写入流量字节
limit_maxbytes : 最大允许使用的内存量,字节

清空统计数据:

复制代码代码如下:
stats reset

清空所有键值

复制代码代码如下:
flush_all

注:flush并不会将items删除,只是将所有的items标记为expired,因此这时memcache依旧占用所有内存。

退出

复制代码代码如下:
quit\r\n

其他命令

1.显示各个slab的信息,包括chunk的大小、数目、使用情况等

复制代码代码如下:
stats slabs

2.显示各个slab中item的数目和最老item的年龄(最后一次访问距离现在的秒数)

复制代码代码如下:
stats items

3.设置或者显示详细操作记录

复制代码代码如下:
stats detail [on|off|dump]

参数为on,打开详细操作记录
参数为off,关闭详细操作记录
参数为dump,显示详细操作记录(每一个键值get、set、hit、del的次数)

4.显示某个slab中的前limit_num个key列表

复制代码代码如下:
stats cachedump slab_id limit_num

显示格式如下:

复制代码代码如下:
ITEM <key_name> [ <value_length> b; <expire_time|access_time> s]

<key_name>:键名
<value_length>:值长度(单位字节)
<expire_time|access_time>:memcached 1.2.2及以前版本显示的是 访问时间(timestamp)

在telnet下操作memcache详解(操作命令详解)的更多相关文章

  1. linux下操作memcache的操作命令

    1.连接memcache linux下一般使用telnet连接memcache服务 [root@localhost ~]# telnet 127.0.0.1 11266 Trying 127.0.0. ...

  2. php操作memcache的用法、详解和方法介绍

    1.简介 memcache模块是一个高效的守护进程,提供用于内存缓存的过程式程序和面向对象的方便的接口,特别是对于设计动态web程序时减少对数据库的访问. memcache也提供用于通信对话(sess ...

  3. Linux下文件和文件夹操作命令详解

    花了两个小时的时间,把文件和文件夹相关的常用命令:创建.删除.移动.复制.查找.重命名在linux上测试了一把,总结下来.文件夹的这些基本操作是要多注意的,一不小心就达不到你想要的效果. 文件夹操作: ...

  4. Python下操作Memcache/Redis/RabbitMQ说明

    一.MemcacheMemcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访 ...

  5. 详解PHP操作Memcache缓存技术提高响应速度的方法

    本文转载http://blog.csdn.net/zhihua_w  不错的博客,仅供本人学习之用 一般来说,如果并发量不大的情况,使不使用缓存技术并没有什么影响,但如果高并发的情况,使用缓存技术就显 ...

  6. 【转】adb操作命令详解及大全

    adb是什么?:adb的全称为Android Debug Bridge,就是起到调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具.a ...

  7. Ubuntu下Git从搭建到使用详解

    Ubuntu下Git从搭建到使用详解 一.git的搭建 (1).sudo apt-get update (2).sudo apt-get -y install git 符:安装最新版本方法: add- ...

  8. 转:adb操作命令详解及大全

    说到 ADB 大家应该都不陌生,即 Android Debug Bridge,Android调试桥,身为 Android 开发的我们,熟练使用 ADB 命令将会大大提升我们的开发效率, ADB 的命令 ...

  9. CentOS6.5下VNC Server远程桌面配置详解

    参考文献: (总结)CentOS Linux下VNC Server远程桌面配置详解 远程桌面连接工具VNC——license Key 我的下载地址为 太平洋下载 VNC连接黑屏的问题 centos 6 ...

随机推荐

  1. flask中文问题

    在使用flask时在模板中使用了中文,运行的时候遇到下面的问题: UnicodeDecodeError UnicodeDecodeError: 'utf8' codec can't decode by ...

  2. DNS劫持(网页打不开的解决方法)

    我们上网,必不可少的就是DNS,在这里先介绍下DNS的相关知识. DNS 是域名系统 (Domain NameSystem) 的缩写,它是由解析器和域名服务器组成的.域名服务器是指保存有该网络中所有主 ...

  3. Sprint会议-初步组织划分

    主题:Spring冲刺计划会议,组员已认领方式领取任务,对个人任务进行详细划分. 日期:2015.4.26 地点:学一食堂二楼 与会人员:王雪青.陆宇.徐擎天.张文冬.赵建松 索引表 因早期任务的认领 ...

  4. Bootstrap入门四:代码

    1.内联代码 code: 通过 <code> 标签包裹内联样式的代码片段.灰色背景.灰色边框和红色字体. For example, <code><section>& ...

  5. 配置Symfony2

    安装成功后打开server php app/console server:run 127.0.0.1:8000 然后在浏览器输入localhost/8000/config.php进行配置 1.date ...

  6. apple 官方文档 Push Notification Programming

    iOS Developer LibraryDeveloper Search Local and Push Notification Programming Guide PDF Table of Con ...

  7. URAL题解—不断跟新中

    1014:简单题,忘了0的情况可以是10,== 1219:找呀找规律,满足N*(N-1)/2+1=X;就是1 的情况了

  8. Effeckt.css项目:CSS交互动画应用集锦

    目前,网上有大量基于CSS转换的实验和示例,但它们都过于分散,而Effeckt.css的目标就是把所有基于CSS/jQuery动画的应用集中起来,例如:弹窗.按钮.导航.列表.页面切换等等. Effe ...

  9. svg琐碎01

    svg中的<g>主要用来做分组的定位,使用transform="translate(xOffset,yOffset)" 更改起始坐标. transform中的坐标是相对 ...

  10. ibatis的iterate使用

    Iterate:这属性遍历整个集合,并为 List 集合中的元素重复元素体的内容. Iterate 的属性:       prepend  - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选 ...