`

Using the memcached telenet interface

 
阅读更多

source URL : http://lzone.de/articles/memcached.htm

memcached Telnet Interface

This is a short summary of everything important that helps to inspect a running memcached instance.

How To Connect

Use "ps -ef" to find out which IP and port was passed when memcached was started and use the same with telnet to connect to memcache. Example:

telnet 10.10.1.24 23456

 

Supported Commands

The supported commands (the official ones and some unofficial) are documented in the doc/protocol.txt document.

Sadly the syntax description isn't really clear and a simple help command listing the existing commands would be much better. Here is an overview of the commands you can find in the source (as of 16.12.2008):

 


Command    Description Example
get Reads a value get mykey
set Set a key unconditionally set mykey 0 60 5
add Add a new key add newkey 0 60 5
replace Overwrite existing key replace key 0 60 5
append Append data to existing key append key 0 60 15
prepend Prepend data to existing key prepend key 0 60 15
incr Increments numerical key value by given number incr mykey 2
decr Decrements numerical key value by given number decr mykey 5
delete Deletes an existing key delete mykey
flush_all
Invalidate specific items immediately
Invalidate all items in n seconds
flush_all
flush_all 900
stats
Prints general statistics
Prints memory statistics
Prints memory statistics
Print higher level allocation statistics
 
 
 
Resets statistics
stats
stats slabs
stats malloc
stats items
stats detail
stats sizes
stats cachedump 1 10
stats reset
version Prints server version. version
verbosity Increases log level verbosity
quit Terminate telnet session quit

Traffic Statistics

You can query the current traffic statistics using the command

stats
You will get a listing which serves the number of connections, bytes in/out and much more.

 

Example Output:

STAT pid 14868
STAT uptime 175931
STAT time 1220540125
STAT version 1.2.2
STAT pointer_size 32
STAT rusage_user 620.299700
STAT rusage_system 1545.703017
STAT curr_items 228
STAT total_items 779
STAT bytes 15525
STAT curr_connections 92
STAT total_connections 1740
STAT connection_structures 165
STAT cmd_get 7411
STAT cmd_set 28445156
STAT get_hits 5183
STAT get_misses 2228
STAT evictions 0
STAT bytes_read 2112768087
STAT bytes_written 1000038245
STAT limit_maxbytes 52428800
STAT threads 1
END

 

Memory Statistics

You can query the current memory statistics using

stats slabs

 

Example Output:

STAT 1:chunk_size 80
STAT 1:chunks_per_page 13107
STAT 1:total_pages 1
STAT 1:total_chunks 13107
STAT 1:used_chunks 13106
STAT 1:free_chunks 1
STAT 1:free_chunks_end 12886
STAT 2:chunk_size 100
STAT 2:chunks_per_page 10485
STAT 2:total_pages 1
STAT 2:total_chunks 10485
STAT 2:used_chunks 10484
STAT 2:free_chunks 1
STAT 2:free_chunks_end 10477
[...]
STAT active_slabs 3
STAT total_malloced 3145436
END

 

Which Keys Are Used?

There seems to be no builtin function to determine the currently set keys. However you can use the

stats items
command to determine how many keys do exist.
stats items
STAT items:1:number 220
STAT items:1:age 83095
STAT items:2:number 7
STAT items:2:age 1405
[...]
END
This at least helps to see if any keys are used. To dump the key names from a PHP script that already does the memcache access you can use the PHP code from 100days.de.

 

Never Set a Timeout > 30 Days!

While this has nothing to do with the telnet access this is a problem you might run into. If you try to "set" or "add" a key with a timeout bigger than the allowed maximum you might not get what you expect because memcached then treats the value as a Unix timestamp. Also if the timestamp is in the past it will do nothing at all. Your command will silently fail.

So if you want to use the maximum lifetime specify 2592000. Example:

set my_key 0 2592000 1
1

Disappearing Keys on Overflow

Despite the documentation saying something about wrapping around 64bit overflowing a value using "incr" causes the value to disappear. It needs to be created using "add"/"set" again.

 

----------------------------------------------------------------------------------------------

 

1、启动Memcache 常用参数
memcached 1.4.3
-p <num>      设置端口号(默认不设置为: 11211)
-U <num>      UDP监听端口 (默认: 11211, 0 时关闭)  
-l <ip_addr>  绑定地址 (默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)
-d            独立进程运行
-u <username> 绑定使用指定用于运行进程 <username>
-m <num>      允许最大内存用量,单位M (默认: 64 MB)
-P <file>     将PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与 -d 一起使用
如:
在linux下:./usr/local/bin/memcached -d -u jb-mc -l 192.168.1.197 -m 2048 -p 12121
在window下:d:\App_Serv\memcached\memcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500
在windows下注册为服务后运行:
sc.exe create jb-Memcached binpath= “d:\App_Serv\memcached\memcached.exe -d RunService -p 11211 -m 500″ start= auto
net start jb-Memcached

 

3.1 memcached Telnet Interface

Command Description Example
get Reads a value get mykey
set Set a key unconditionally set mykey 0 60 5
add Add a new key add newkey 0 60 5
replace Overwrite existing key replace key 0 60 5
append Append data to existing key append key 0 60 15
prepend Prepend data to existing key prepend key 0 60 15
incr Increments numerical key value by given number incr mykey 2
decr Decrements numerical key value by given number decr mykey 5
delete Deletes an existing key delete mykey
flush_all Invalidate specific items immediately flush_all
Invalidate all items in n seconds flush_all 900
stats Prints general statistics stats
Prints memory statistics stats slabs
Prints memory statistics stats malloc
Print higher level allocation statistics stats items
  stats detail
  stats sizes
Resets statistics stats reset
version Prints server version. version
verbosity Increases log level verbosity
quit Terminate telnet session quit

 


3.2 telnet请求命令格式

<command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n
a) <command name> 可以是”set”, “add”, “replace”
“set”表示按照相应的<key>存储该数据,没有的时候增加,有的覆盖。
“add”表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败。
“replace”表示按照相应的<key>替换数据,但是如果该<key>不存在则操作失败

b) <key> 客户端需要保存数据的key。

c) <flags> 是一个16位的无符号的整数(以十进制的方式表示)。
该标志将和需要存储的数据一起存储,并在客户端get数据时返回。
客户可以将此标志用做特殊用途,此标志对服务器来说是不透明的。

d) <exptime> 过期的时间。
若为0表示存储的数据永远不过时(但可被服务器算法:LRU 等替换)。
如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。

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

f) 最后客户端需要加上”\r\n”作为”命令头”的结束标志。
<data block>\r\n

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

3.3 telnet响应命令

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

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

如: set key 33 0 4\r\n
ffff\r\n

4、获取/检查KeyValue
get <key>*\r\n
a) <key>* 表示一个或者多个key(以空格分开)
b) “\r\n” 命令头的结束

结果响应:reply
服务器端将返回0个或者多个的数据项。每个数据项都是由一个文本行和一个数据块组成。当所有的数据项都接收完毕将收到”END\r\n”
每一项的数据结构:
VALUE <key> <flags> <bytes>\r\n
<data block>\r\n

a) <key> 希望得到存储数据的key
b) <falg> 发送set命令时设置的标志项
c) <bytes> 发送数据块的长度(不包含”\r\n”)
d) “\r\n” 文本行的结束标志
e) <data block> 希望接收的数据项。
f) “\r\n” 接收一个数据项的结束标志。

如果有些key出现在get命令行中但是没有返回相应的数据,这意味着服务器中不存在这些项,这些项过时了,或者被删除了
如:get aa
VALUE aa 33 4
ffff
END

5、删除KeyValue:
delete <key> <time>\r\n

a) <key> 需要被删除数据的key
b) <time> 客户端希望服务器将该数据删除的时间(unix时间或者从现在开始的秒数)
c) “\r\n” 命令头的结束

6、检查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 : 最大允许使用的内存量,字节

7、高级缓存细节查看方法:
stats reset
清空统计数据

stats malloc
显示内存分配数据

stats cachedump slab_id limit_num
显示某个slab中的前limit_num个key列表,显示格式如下
ITEM key_name [ value_length b; expire_time|access_time s]
其中,memcached 1.2.2及以前版本显示的是  访问时间(timestamp)
1.2.4以上版本,包括1.2.4显示 过期时间(timestamp)
如果是永不过期的key,expire_time会显示为服务器启动的时间

stats cachedump 7 2
ITEM copy_test1 [250 b; 1207795754 s]
ITEM copy_test [248 b; 1207793649 s]

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

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

stats detail [on|off|dump]
设置或者显示详细操作记录

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

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

9、退出
quit\r\n

2、telnet连接

telnet 127.0.0.1 11211

3、写入memcache

分享到:
评论

相关推荐

    using memcached

    ### 使用Memcached:详解分布式内存缓存系统 #### 一、引言 在现代Web开发中,性能优化是一项至关重要的任务。随着用户数量的增长和技术需求的增加,网站必须能够高效地处理大量的请求,并且保持良好的响应速度。...

    memcached 64位 window

    标题"memcached 64位 window"指的是在Windows操作系统上运行的64位版本的Memcached缓存系统。Memcached是一种分布式内存对象缓存系统,广泛用于减轻数据库负载,提高Web应用的性能。由于是64位版本,这意味着它可以...

    Memcached 统计与监控

    为了实现对Memcached的监控,我们可以通过Telnet工具连接到Memcached服务器,默认端口为11211。连接命令如下: ```sh telnet localhost 11211 ``` 如果连接成功,将看到类似以下提示: ``` Trying ::1... ...

    memcached 命令行状态全解

    本文将介绍如何使用 Telnet 命令来查看 Memcached 的运行状态。 一、Telnet 命令 Telnet 是一个基本的网络协议,用于远程登录和查看服务器的状态。我们可以使用 Telnet 命令来连接 Memcached 服务器,并查看其运行...

    安装Memcached及Memcached配置

    - 你可以通过telnet工具连接到Memcached服务,如`telnet 127.0.0.1 11211`,然后输入`stats`命令来查看服务器状态。返回的信息包括: - `time`: 服务器当前的Unix时间戳。 - `total_items`: 自服务器启动以来存储...

    windows下memcached+memcached.dll 5.3.8

    3. **配置Memcached**: 在Windows环境下,不像Linux那样使用服务管理命令,你需要手动创建一个批处理文件或使用第三方工具(如`nssm - the Non-Sucking Service Manager`)将`memcached.exe`作为Windows服务运行。...

    memcached安装软件 libevent magent memcached

    Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载。它通过在内存中存储数据来提供快速的数据访问,从而提高应用的性能。本篇文章将详细讲解如何安装和配置memcached,...

    memcached windows稳定版

    在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装 3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动...

    memcached 1.2.6 1.2.5

    Apply the patch using a command line like: patch -E -p 1 -i memcached-1.2.6.diff Notes: Re-released on 24 Sep 2008 to fix the internal version number that caused the server to return version 1.2.5...

    memcached安装包以及MemCachedClient

    **Memcached 安装与使用详解** Memcached 是一款高性能的分布式内存缓存系统,用于在Web应用中减轻数据库负载。它将数据存储在内存中,以键值对的形式提供快速访问,尤其适用于高并发场景。Memcached 使用简单,可...

    memcached服务器端memcached.exe 下载

    标题“memcached服务器端memcached.exe 下载”指的是获取memcached服务端的可执行文件,`memcached.exe`是Windows环境下运行memcached服务的程序。这个绿色版的memcached意味着它无需安装,下载解压后即可直接运行,...

    windows memcached

    在telnet窗口中,你可以输入Memcached的命令来操作数据,如`set key 0 60 5`(设置键为`key`,值为5个字符,过期时间为60秒),然后输入你的值,如`value`,回车两次确认。 除了命令行交互,开发者通常会使用编程...

    memcached-1.5.4

    - 可以使用`telnet`或`mc-client`工具与`memcached`交互,进行数据的增删查改。 5. **slab分配机制** - `memcached`采用slab分配机制来管理内存,将内存划分为不同大小的chunk,每个chunk对应一个slab类,避免了...

    windows 上的安装Memcached及Memcached配置

    通过telnet工具连接至本地Memcached服务(默认端口11211),使用`stats`命令查询服务状态,返回的信息包括: - `time`: 当前Unix时间戳。 - `total_items`: 自服务启动以来存储的items总数。 - `connection_...

    Net Memcached安装及使用说明

    - 在命令提示符中执行`telnet localhost 11211`(Memcached默认监听端口为11211)。 - 如果成功连接,则可以进一步输入`stats`命令,如果返回了相关信息,则表明安装成功。 #### 三、客户端实例 .NET版本的...

    memcached源代码分析

    测试时,可通过PuTTY的telnet工具连接至11211端口进行交互。Memcached支持四类核心命令: 1. **存储命令**:`set`、`add`、`replace`、`append`、`prepend`,用于指示服务器存储特定键标识的数据。客户端发送命令...

    memcached1.5.6.rar

    9. **监控与故障排查**:使用`telnet`工具可以连接到memcached服务,查看缓存情况;同时,也有第三方监控工具(如Munin、Cacti)用于监控其性能指标,帮助定位问题。 10. **适用场景**:memcached适用于高并发、...

    Memcached 客户端 服务端 管理工具

    - **`telnet`**:最基础的管理方式是直接通过telnet连接到Memcached服务端,手动输入命令进行交互,虽然原始但非常直观。 ### 4. Memcached的应用场景 - **Web应用加速**:缓存动态生成的网页内容,减少数据库查询...

    Enhancing the Scalability of Memcached

    标题与描述:“提升Memcached的可扩展性” 在IT领域,特别是分布式系统和缓存解决方案中,Memcached作为一款开源、多线程、分布式的键值存储系统,被广泛应用于软件即服务(SaaS)场景中,以降低数据库和计算服务器...

Global site tag (gtag.js) - Google Analytics