Memcached用法--参数和命令详解

1. memcached 参数说明:

# memcached -h

1.1 memcached 的参数

常用参数

-p <num> 监听的TCP端口号,默认是11211;(port)
-l <addr> 监听的主机地址,默认是INADDR_ANY,即所有地址,<addr>可以是host:port的形式,如果没有指定port,则使用-p或者-U的值;可以指定多个地址,以逗号分隔或者多次使用-l参数;尽量不要使用默认值,有安全隐患。(listen)
-d 以守护进程运行 (daemon)
-u <username> 指定进程的所有者(只有以root用户执行时才可以使用该参数)(username)
-m <num> 用于存储数据的最大内存,单位是MB,默认是64MB;(memory)
-c <num> 最大并发连接数,默认是1024;
-vv 显示更详细的信息(还显示客户端的命令和响应)
-vvv 显示最详细的信息(还显示内部的状态转变)
-h 显示帮助信息
-P <file> 将PID保存到<file>中,仅和-d参数一起使用;
-f <factor> chunk的增幅因子,默认是1.25,不同的slab class,slab page大小相同,但是chunk大小不等,chunk的大小根据这个增幅因子增长;(factor)
-n <bytes> 为key+value+flags分配的最小内存,单位bytes,默认是48;chunk数据结构本身要占据48字节,所以实际大小是n+48;
-t <num> 使用多少个线程,默认是4;(thread)
-I 设置slab page的大小,即设置可以保存的item的最大值,默认1MB,最小是1K,最大值128M;

其它参数

-U <num> 监听的UDP端口号,默认是11211,0表示关闭UDP监听;(UDP)
-s <file> 要监听的UNIX socket路径(禁用网络支持)(socket)
-a <mask> UNIX socket的访问掩码(access mask),八进制表示,默认是0700. (mask)
-r 文件数量的最大值 (rlimit)
-M 内存耗尽时返回错误,而不是通过LRU淘汰内容;
-k 锁定所有页内存;允许被锁定的内存是有限制的,超过限制可能会失败。
-v 显示启动信息(错误和警告信息)(verbose)
-i 显示memcached和libevent的licence信息
-L 一次申请大的内存页(如果可以);增大内存页的大小,可以提高性能;
-D <char> 指定key前缀与ID的分隔符,用于stats信息显示,默认是冒号:,如果使用了该参数,则stats收集自动启用了,否则,需要发送命令“stats detail on”命令来启动stats的收集。
-R 每一个事件(event)的最大请求数,限制最大请求数可以防止线程饥饿,默认是20;
-C 禁用CAS;
-b 设置backlog队列限制,默认1024;
-B 指定绑定协议,ascii,binary或者auto,其中auto是默认值;

1.2 repcached的参数:

-x <ip_addr> peer主机的主机名或者ip地址;
-X peer主机的TCP端口,即主从同步端口,共同的监听端口

1.3 常用的参数组合

# memcached -d -m -p 11212 -u nobody -l 127.0.0.1 -x 127.0.0.1 -X 11222 -P /tmp/localhost_slave.pid -vv

2. 基本命令与操作

2.1 存储的命令

主要有:set,add,replace,append,prepend,cas;格式为:

command key flag expiration_time bytes
value

key表示键,flag表示key/value的额外信息,expiration_time表示过期时间,单位为秒,0表示永不过期,bytes表示值所占的字节数,必须完全匹配,value表示key对应的值,总是出现在第二行。

set命令表示存储一个key/value对,如果该key已存在,则更新对应的value值;如果成功,返回STORED。

set file_path 0 0 5
/opt/
<29 rep file_path 0 0 5 12
REP>29 STORED
STORED

add命令也表示增加key/value,如果key/value已存在,add操作失败;保存成功返回STORED,失败返回NOT_STORED。

add file_path 0 60 5
/opt/
NOT_STORED
add file_suffix 0 0 2
js
<29 rep file_suffix 0 0 2 16
REP>29 STORED
STORED

replace命令表示更新key对应的value值,如果key/value不存在,replace操作失败;成功返回STORED,失败返回NOT_STORED;

replace first 0 0 7
tianjin
STORED
replace second 0 0 8
shanghai
NOT_STORED

append表示在key对应的value值后追加数据,key必须已存在,否则操作失败;成功返回STORED,失败返回NOT_STORED;

append second 0 0 8
shanghai
NOT_STORED
append first 0 0 3
go
STORED

prepend在key对应的value值的前面追加数据,key必须已存在,否则操作失败;成功返回STORED,失败返回NOT_STORED;

prepend second 0 0 2
hi
NOT_STORED
prepend first 0 0 2
hi
STORED
get first
VALUE first 0 15
hitianjin go go
END

cas (check and set):先比较后存储,即原子更新,原理类似于乐观所。每次请求存储某个数据时附带一个cas值,memcached比对这个cas值与当前存储数据的cas值是否相等,如果相等,则更新数据,否则操作失败;当前存储的cas值通过gets命令获取。成功返回STORED,失败返回EXISTS。

gets first
VALUE first 0 7 12 // 12表示cas id,可以理解为版本号
chengdu
END
cas first 0 0 8 10 // 10 != 12,cas失败
shanghai
EXISTS
cas first 0 0 8 12 // 12表示gets后没有修改key的值,因此可以set
shanghai
STORED

2.2 读取的命令

get根据key获取value值;可以获取多个key的值;get key | get key1 key2

get first
VALUE first 0 8
shanghai
END get first fine
VALUE first 0 8
shanghai
VALUE fine 0 5
yes!!
END

gets是与cas一起使用的命令,gets会额外返回一个cas值,可以理解为版本;如果最后一次gets后,该cas值改变了,则cas设置的值不会存储;gets key | gets key1 key2

gets first
VALUE first 0 8 13
shanghai
END
set first 0 0 7
chengdu
STORED
cas first 0 0 7 13 // 因为gets后set了,所以cas id改变了,cas失败
chengdu
EXISTS

delete命令删除key/value对,一次只能删除一个key/value对;如果要删除的key不存在,操作失败: delete key

delete first second
CLIENT_ERROR bad command line format. Usage: delete <key> [noreply]
delete first
DELETED

incr/decr: 如果key的value值表示的是一个64位整数,可以通过incr和decr命令进行数值的增减: incr/decr key num

set id 0 120 2
10
STORED
incr id 10
20
decr id 5
15

2.3 统计的命令

stats显示进程及当前状态等信息。

stats
STAT pid 1224 // 进程id
STAT uptime 30385 // 系统运行的事件,单位:秒
STAT time 1392199633 // 系统当前事件,Unix时间戳表示的时间:2/12/2014 6:25:40 PM
STAT version 1.4.13 // memcached版本
STAT libevent 2.0.21-stable // libevent版本
STAT pointer_size 64 // 操作系统字大小(64位)
STAT rusage_user 1.892712 // 进程累计用户时间
STAT rusage_system 0.996848 // 进程累计系统时间
STAT curr_connections 8 // 当前打开的连接数
STAT total_connections 9 // 曾打开的连接总数
STAT connection_structures 9 // 服务器分配的连接结构数
STAT reserved_fds 20
STAT cmd_get 29 // 执行get命令的总数
STAT cmd_set 29 // 执行set命令的总数
STAT cmd_flush 2 // 执行flush_all命令的总数
STAT cmd_touch 0
STAT get_hits 14
STAT get_misses 15
STAT delete_misses 3
STAT delete_hits 3
STAT incr_misses 0
STAT incr_hits 4
STAT decr_misses 0
STAT decr_hits 2
STAT cas_misses 1
STAT cas_hits 2
STAT cas_badval 2
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 1503
STAT bytes_written 4125
STAT limit_maxbytes 134217728
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 expired_unfetched 0
STAT evicted_unfetched 0
STAT replication MASTER
STAT repcached_version 2.3.1
STAT repcached_qi_free 8191
STAT bytes 217 // 存储的item字节数
STAT curr_items 3 // 当前item数量
STAT total_items 25 // item的总数
STAT evictions 0 // 为获取空间删除的item数量
STAT reclaimed 2
END

stats items 显示items的相关信息

stats items
STAT items:1:number 3
STAT items:1:age 1552
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 2
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
END

stats slabs 显示slab的相关信息

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 3
STAT 1:free_chunks 0
STAT 1:free_chunks_end 10919
STAT 1:mem_requested 217
STAT 1:get_hits 14
STAT 1:cmd_set 29
STAT 1:delete_hits 3
STAT 1:incr_hits 4
STAT 1:decr_hits 2
STAT 1:cas_hits 2
STAT 1:cas_badval 2
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512
END

stats sizes

stats sizes
STAT 96 3
END

stats cachedump 显示slab中items的信息(该命令在将来可能不再支持):stats cachedump [slab id] [number of items, 0 for all items]

set city 0 0 7
tianjin
STORED
stats cachedump 1 0
ITEM city [7 b; 1392169248 s]
END
get city
VALUE city 0 7
tianjin
END

flush_all 使cache中的所有items都过期,server不会停止,也不会刷新或者释放内存。

flush_all
OK
get first
END

参考

(转)Memcached用法--参数和命令详解的更多相关文章

  1. Memcached中的存取命令详解

    本文和大家分享的主要是Memcached中常用的一些存取命令相关用法,一起来看看吧,希望对大家学习Memcached有所帮互助. 存储命令 set:不管key存在与否,强制进行set操作: add:必 ...

  2. [转] - JAR文件包及jar命令详解 ( MANIFEST.MF的用法 )

    常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像. chm 文档一样双击运行了:而另一种是使用 JET 来进 ...

  3. (转)Linux内核参数设置sysctl命令详解

    Linux内核参数设置sysctl命令详解 原文:https://www.zhukun.net/archives/8064 sysctl是一个允许您改变正在运行中的Linux系统的接口. 它包含一些 ...

  4. linux netcat 命令详解

    功能说明:强大的网络工具语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p< ...

  5. linux yum命令详解

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...

  6. Docker命令详解

    Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

  7. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  8. DOS命令详解

    DOS命令详解 命令 \? 可以进入命令帮助 1.md命令创建目录. MKDIR [drive:]pathMD [drive:]path 如果命令扩展被启用,MKDIR 会如下改变: 如果需要,MKD ...

  9. Linux命令详解之—tail命令

    tail命令也是一个非常常用的文件查看类的命令,今天就为大家介绍下Linux tail命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux tail命令主要用来从指定点开始将文 ...

随机推荐

  1. TinkerPop中的遍历:图的遍历中谓词、栅栏、范围和Lambda的说明

    关于谓词的注意事项 P是Function<Object,Boolean>形式的谓词.也就是说,给定一些对象,返回true或false.所提供的谓词在下表中概述,并用于各种步骤,例如has( ...

  2. .net 索引器

    索引器允许类或结构的实例就像数组一样进行索引. 索引器类似于属性,不同之处在于它们的访问器采用参数. 在下面的示例中,定义了一个泛型类,并为其提供了简单的 get 和 set 访问器方法(作为分配和检 ...

  3. easyui rowspan

    第一种写法 columns: [ [ { field: 'depName', title: '部门', rowspan: 2, width: '100px', align: 'center' }, { ...

  4. IDEA使用maven创建SSM及其依赖的导入

    $.说明: 1.IDEA创建maven SSM web项目 2.导入依赖 一.IDEA创建maven SSM项目 对于初入IDEA的人来说此篇博客适用于不会创建maven 项目的人 首先下载IDEA  ...

  5. java24种设计模式

    一.设计模式定义 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式是为了可重用代码.让代码更容易被他人理解并且保证代码可靠性. ...

  6. 自定义Mybatis框架

    项目结构:      https://files-cdn.cnblogs.com/files/mkl7/ownMybatis.zip 1. 创建maven工程并引入坐标: <?xml versi ...

  7. MySQL Index Condition Pushdown 原理与解析

    Index Condition Pushdown(ICP)是针对mysql使用索引从表中检索行数据时的一种优化方法.   原理: 在没有ICP特性之前,存储引擎根据索引去基表查找并将数据返回给mysq ...

  8. (Python OpenGL)【1】你好顶点 PyOpenGL

    原文链接(C语言环境)(Python OpenGL) 我用python实现的代码: __author__ = "WSX" from OpenGL.GLUT.freeglut imp ...

  9. NOIWC2019游记

    更新完了? ghj1222这个智障因为NOIP考的太菜没有去THUWC和PKUWC,但是NOIWC还是苟进去了 由于已经结束了,好多事实忘了,所以可能不完整 2019/1/23 Wednesday 明 ...

  10. Zookeeper基础使用

    部署和运行 脚本 ZooKeeper的bin目录下的脚本见下表 脚本 说明 zkCleanup 清理ZooKeeper历史数据,包括事务日志文件和快照数据文件 zkCli ZooKeeper的一个简易 ...