Memcached命令解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介:

一、存储命令


存储命令的格式:

<command name> <key> <flags> <exptime> <bytes>

<data block>


参数说明如下:

<command name>

Set/add/replace

<key>

查找关键字

<flags>

客户机使用它存储关于键值对的额外信息

<exptime>

该数据的存活时间,0表示永远

<bytes>

存储字节数

<data block>

存储的数据块(可直接理解为key-value结构中的value)


1. set命令

无论如何都存储的set。

这个set的命令在memcached中的使用频率极高。set命令不但可以简单添加,如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。


示例:

set key1 0 0 1
1
STORED


2. add命令

只有数据不存在时进行添加的add。

如果是新加入的item,那么将其直接放在LRU顶端;如果item已经存在导致add失败,那么将这个item从LRU链表上摘下再放到LRU顶端。


示例:

add newuser 0 0 6
ryanxu
STORED


3. replace命令

只有数据存在时进行替换的replace。


示例:

replace newuser 0 0 6
kokoxu
STORED


4. append命令

紧接着已经存在的item增加item。这个操作不允许增加原来的item限制,对管理链表很有用。


示例:

get username
END
set username 0 0 6
ryanxu
STORED
get username
VALUE username 0 6
ryanxu
END
append username 0 0 6
kokoxu
STORED
get username
VALUE username 0 12
ryanxukokoxu
END


在现有的缓存数据后添加缓存数据,如现有缓存的key不存在服务器响应为NOT_STORED。


5. prepend命令

与append命令类似,这个命令是在已存在的数据前加入新数据。


示例:

set username 0 0 6
ryanxu
STORED
get username
VALUE username 0 6
ryanxu
END
prepend username 0 0 6
kokoxu
STORED
get username
VALUE username 0 12
kokoxuryanxu
END


6. cas命令

cas即checked and set的意思,如果从上次读取到现在没有更新,那么存入数据,处理更新竞争很有用。

只有当最后一个参数和gets所获取的参数匹配时才能存储,否则返回“EXISTS”。


示例:

gets newuser
VALUE newuser 0 6 8
kokoxu
END
cas newuser 0 0 6 9
aaaaaa
EXISTS
cas newuser 0 0 6 8
aaaaaa
STORED
get newuser
VALUE newuser 0 6
aaaaaa
END

 

二、读取命令


1. get命令

get命令的key可以表示一个或者多个键,键之间以空格隔开


示例:

get newuser
VALUE newuser 0 6
aaaaaa
END
get key2 key4
VALUE key2 0 2
22
VALUE key4 0 4
4444
END


2. gets命令

使用CAS的get命令,返回的item带有一个CAS标识符 (一个唯一的64位数)。使用cas命令返回数据。如果得到的item的cas值被更改了,这个数据将不会被保存。

可以看到,gets命令比普通的get命令多返回了一个数字。这个数字可以检查数据是否发生改变。当key对应的数据改变时,这个多返回的数字也会改变。


示例:

get newuser
VALUE newuser 0 6
aaaaaa
END
gets newuser
VALUE newuser 0 6 9
aaaaaa
END
replace newuser 0 0 6
kkkkkk
STORED
get newuser
VALUE newuser 0 6
kkkkkk
END
gets newuser
VALUE newuser 0 6 10
kkkkkk
END

 

三、删除命令


删除命令的格式:

delete <key> <time>


参数说明如下:

<key>

需要被删除数据的key

<time>

客户端希望服务器将该数据删除的时间(unix时间或者从现在开始的秒数)


示例:

delete newuser
DELETED
delete newuser
NOT_FOUND


可以看到,删除已存在的键值和不存在的记录可以返回不同的结果。

 

四、incr/decr命令


Increment and Decrement. 如果item是以64位整型存储的,那么可以使用incr和decr命令修改那个数。

如果数据不存在,那么将返回失败。


命令格式为:

Incr <key> <value>

Decr <key> <value>


参数说明:

<key>

数据项的key

<value>

用户希望增加/减少的数据的数值。该数值是一个32位十进制的无符号整形变量。


注意:

a) 如果一个数据项的有效期被设置为0,这时使用decr命令是无法减少数据。

b) 如果要执行 incr key -1 的操作不会有什么问题,结果和你希望的一样。但是,执行decr -1时的结果一定会让你觉得很意外,因为它的结果无论key的数据是什么结果的都是0.原因是:在这两个命令的执行过程中都是吧-1当做一个无符号的整形处理的。

c) 执行decr命令时数据的长度不会随之而减小,而是在返回数据的后面填补空格。但是执行incr命令越界后会自动的增加数据的位数。

 

五、状态查看命令


1. stats命令

查看memcached状态的基本命令,通过这个命令可以看到如下信息:

STAT pid 22459                             进程ID   
STAT uptime 1027046                        服务器运行秒数    
STAT time 1273043062                       服务器当前unix时间戳    
STAT version 1.4.4                         服务器版本    
STAT pointer_size 64                       操作系统字大小(这台服务器是64位的)    
STAT rusage_user 0.040000                  进程累计用户时间    
STAT rusage_system 0.260000                进程累计系统时间    
STAT curr_connections 10                   当前打开连接数    
STAT total_connections 82                  曾打开的连接总数    
STAT connection_structures 13              服务器分配的连接结构数    
STAT cmd_get 54                            执行get命令总数    
STAT cmd_set 34                            执行set命令总数    
STAT cmd_flush 3                           指向flush_all命令总数    
STAT get_hits 9                            get命中次数    
STAT get_misses 45                         get未命中次数    
STAT delete_misses 5                       delete未命中次数    
STAT delete_hits 1                         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 auth_cmds 0    
STAT auth_errors 0    
STAT bytes_read 15785                      读取字节总数    
STAT bytes_written 15222                   写入字节总数    
STAT limit_maxbytes 1048576                分配的内存数(字节)    
STAT accepting_conns 1                     目前接受的链接数    
STAT listen_disabled_num 0                  
STAT threads 4                             线程数    
STAT conn_yields 0    
STAT bytes 0                               存储item字节数    
STAT curr_items 0                          item个数    
STAT total_items 34                        item总数    
STAT evictions 0                           为获取空间删除item的总数


2. stats items命令

输出各个slab中的item信息,如下:

STAT items:1:number 2
STAT items:1:age 1188
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 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
STAT items:1:crawler_reclaimed 0
STAT items:1:lrutail_reflocked 0
END


3. stats slabs命令

输出slab中更详细的item信息,如下:

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 2
STAT 1:free_chunks 10920
STAT 1:free_chunks_end 0
STAT 1:mem_requested 144
STAT 1:get_hits 19
STAT 1:cmd_set 12
STAT 1:delete_hits 1
STAT 1:incr_hits 0
STAT 1:decr_hits 0
STAT 1:cas_hits 2
STAT 1:cas_badval 2
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512
END


4. stats sizes命令

输出所有item的大小和个数,如下:

stats sizes
STAT 96 2
END


5. stats cachedump <slab_id> <limit_num>

根据<slab_id>输出相同的<slab_id>中的item信息。<limit_num>是输出的个数,当<limit_num>为0是输出所有的item。


示例:

stats cachedump 1 0
ITEM key4 [4 b; 1429583183 s]
ITEM key2 [2 b; 1429583183 s]
END
stats cachedump 1 1
ITEM key4 [4 b; 1429583183 s]
END
stats cachedump 1 2
ITEM key4 [4 b; 1429583183 s]
ITEM key2 [2 b; 1429583183 s]


这里slab_id为1,是stats items返回的结果(STAT items后面的数字)决定的;limit_num是返回多少条记录,不过0表示显示出所有记录,而n(n>0)就表示显示n条记录,如果n超过该slab下的所有记录,则结果和0返回的结果一致。

 

六、flush_all命令


使在内存中所有的item失效。加入参数则表示在N秒后失效所有item。这项操作会立即返回,不会暂停服务器。这个操作并不会真的释放内存空间,而是标志所有的item为失效。


示例:

flush_all
OK
get username
END
















本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1636626 ,如需转载请自行联系原作者



相关文章
|
1月前
|
网络协议 开发工具 C语言
Jetson错误(二):wget命令提示无法解析主机地址的问题解决
对于解决在NVIDIA Jetson平台上使用wget命令时出现的无法解析主机地址的问题,提供了两种解决方法:一种是临时修改DNS服务器为Google的公共DNS,另一种是永久修改DNS设置。
84 5
|
2月前
|
存储 缓存 NoSQL
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
71 0
|
3月前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
147 3
|
3月前
|
存储 缓存 NoSQL
深入解析Memcached:内部机制、存储结构及在大数据中的应用
深入解析Memcached:内部机制、存储结构及在大数据中的应用
|
3月前
|
数据采集 运维 监控
运维笔记:流编辑器sed命令用法解析
运维笔记:流编辑器sed命令用法解析
57 5
|
3月前
|
Linux 数据安全/隐私保护 Perl
解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
78 8
|
3月前
|
运维 Rust 监控
Linux高效运维必备:fd命令深度解析,文件描述符管理从此得心应手!
【8月更文挑战第23天】本文介绍了一款名为fd的命令行工具,该工具基于Rust语言开发,旨在以更直观的语法和更快的速度替代传统的`find`命令。通过本文,您可以了解到如何安装fd以及一些基本用法示例,比如使用正则表达式匹配文件名、排除特定目录等。此外,文章还展示了如何结合`ps`和`lsof`命令来查找特定文件并显示其文件描述符,从而帮助您更好地管理和监控Linux系统中的文件与进程。
128 0
|
6月前
|
Linux Memcache
Linux - 安装memcached
Linux - 安装memcached
107 0
Linux - 安装memcached
|
5月前
|
缓存 Java Spring
SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解
SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解
46 0
|
Docker 容器
Docker下安装memcached
Docker下安装memcached
159 0

热门文章

最新文章

推荐镜像

更多