memcache linux 下的使用
来源:互联网 发布:随身带着淘宝去异界301 编辑:程序博客网 时间:2024/05/01 18:04
近来一直对memcache的telnet使用方法有些苦恼,不明白其中的一些参数代表什么意思,查询很多资料,终于搞明白了一些,另外还学习了PHP遍历memcache的方法,但由于我们很多服务器都加载cookie的加密扩展,很多的键值都是MD5加密,不过对于没有加密的服务器还是有些用处的。总结如下:
一,telnet请求命令格式
<command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n
1,<command name> 可以是”set”, “add”, “replace”。
“set”表示按照相应的<key>存储该数据,没有的时候增加,有的覆盖。
“add”表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败。
“replace”表示按照相应的<key>替换数据,但是如果该<key>不存在则操作失败
2,<key> 客户端需要保存数据的key。
3,<flags> 是一个16位的无符号的整数(以十进制的方式表示)。
该标志将和需要存储的数据一起存储,并在客户端get数据时返回。
客户可以将此标志用做特殊用途,此标志对服务器来说是不透明的。
4,<exptime> 过期的时间。
若为0表示存储的数据永远不过时(但可被服务器算法:LRU 等替换)。
如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。
5,<bytes> 需要存储的字节数(不包含最后的”\r\n”),当用户希望存储空数据时,<bytes>可以为0
6,“STORED\r\n”:表示存储成功 .“NOT_STORED\r\n”:表示存储失败,但是该失败不是由于错误。
例:set key 0 8 4
输入:zhao
说明:键是key ,0 为flags , 8 为过期时间8秒,4 为值的长度 ,zhao为键的值
stats items 列出所有的items
stats items
STAT items:1:number 220
STAT items:1:age 83095
STAT items:2:number 7
STAT items:2:age 1405
[...]
END
stats cachedump 1 0 //列出所有的key,1为items:1,这个值,0为所有,也可指定列出多少条
stats cachedump 1 0
ITEM key1 [8 b; 1331609364 s]
ITEM key2 [8 b; 1331609364 s]
get key 列出key的值
get key1
VALUE key1 0 8
zhangyan
二,通过PHP,遍历所有键值
<?php
/*
* 首先连接到memcache,列出所有的ITEMS
* 然后将ITEMS下的KEY列出来,进行遍历,将值输出
*/
$host = '192...43';
$port = 11211;
$mem = new Memcache();
$mem->connect($host,$port);
$items=$mem->getExtendedStats ('items');
$items=$items["$host:$port"]['items'];//列出所有的ITEMS项目
for ($i=1,$len=count($items);$i<=$len;$i++)
{
//$number=$items[$i]['number'];
$str=$mem->getextendedstats("cachedump",$i,0);//输出每个ITEMS下的KEY
//var_dump($str);
$line=$str["$host:$port"];
if (is_array($line)&&count($line)>0)
{
foreach($line as $key =>$value){
echo $key.'--';
print_r($mem->get($key));
echo "\r\n";
}
}
}
?>
一,telnet请求命令格式
<command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n
1,<command name> 可以是”set”, “add”, “replace”。
“set”表示按照相应的<key>存储该数据,没有的时候增加,有的覆盖。
“add”表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败。
“replace”表示按照相应的<key>替换数据,但是如果该<key>不存在则操作失败
2,<key> 客户端需要保存数据的key。
3,<flags> 是一个16位的无符号的整数(以十进制的方式表示)。
该标志将和需要存储的数据一起存储,并在客户端get数据时返回。
客户可以将此标志用做特殊用途,此标志对服务器来说是不透明的。
4,<exptime> 过期的时间。
若为0表示存储的数据永远不过时(但可被服务器算法:LRU 等替换)。
如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。
5,<bytes> 需要存储的字节数(不包含最后的”\r\n”),当用户希望存储空数据时,<bytes>可以为0
6,“STORED\r\n”:表示存储成功 .“NOT_STORED\r\n”:表示存储失败,但是该失败不是由于错误。
例:set key 0 8 4
输入:zhao
说明:键是key ,0 为flags , 8 为过期时间8秒,4 为值的长度 ,zhao为键的值
stats items 列出所有的items
stats items
STAT items:1:number 220
STAT items:1:age 83095
STAT items:2:number 7
STAT items:2:age 1405
[...]
END
stats cachedump 1 0 //列出所有的key,1为items:1,这个值,0为所有,也可指定列出多少条
stats cachedump 1 0
ITEM key1 [8 b; 1331609364 s]
ITEM key2 [8 b; 1331609364 s]
get key 列出key的值
get key1
VALUE key1 0 8
zhangyan
二,通过PHP,遍历所有键值
<?php
/*
* 首先连接到memcache,列出所有的ITEMS
* 然后将ITEMS下的KEY列出来,进行遍历,将值输出
*/
$host = '192...43';
$port = 11211;
$mem = new Memcache();
$mem->connect($host,$port);
$items=$mem->getExtendedStats ('items');
$items=$items["$host:$port"]['items'];//列出所有的ITEMS项目
for ($i=1,$len=count($items);$i<=$len;$i++)
{
//$number=$items[$i]['number'];
$str=$mem->getextendedstats("cachedump",$i,0);//输出每个ITEMS下的KEY
//var_dump($str);
$line=$str["$host:$port"];
if (is_array($line)&&count($line)>0)
{
foreach($line as $key =>$value){
echo $key.'--';
print_r($mem->get($key));
echo "\r\n";
}
}
}
?>
- memcache linux 下的使用
- Linux下Memcache的使用及安装
- memcache linux下的使用(二)
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- Linux下的Memcache安装
- flex_简单认识flash.utils.Timer类;
- JavaScript中的对象与构造器
- ASP操作Word文件的例子!!!
- 存储器管理——连续分配方式
- 设为首页、添加到收藏夹、更改地址栏前小图标、按下回车键事件、关闭窗口
- memcache linux 下的使用
- 设置控件背景色
- 远程调试wcf服务
- oracle行列互换
- ubifs入门介绍
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- 使用HISTTIMEFORMAT 显示history命令的时间戳
- 安装smarty
- PyGTK 多线程