Tokyo Tyrant(TTServer)系列(三)-Memcache协议

本文详细介绍了如何通过Memcache协议使用ttserver,并通过telnet连接进行数据操作。主要内容包括添加、获取数据,以及解决序列化问题和自增问题。通过PHP脚本展示了实践过程,特别强调了序列化、反序列化以及自增操作的注意事项。

通过Memcache协议使用ttserver

 通过telnet 127.0.0.1 9032 telnet连接到到启动的实例。
下面我们通过add添加key为key1和value为value1的数据。

通过get key1获取数据。

<key> <flags> <exptime> <bytes>

add key1 1 0 6
value1
STORED
get key1
VALUE key1 0 6
value1
END
编写php脚本
$mem=new Memcache();
$mem->
connect("127.0.0.1",9032);
$mem->
add("key2","xifeijian");
print_r( $mem->
get("key2"));
echo "<br />";
$mem->
add("key3",array("value3"=>"this is xifeijian"));
echo $mem->
get("key3");
?>
执行后输出:(在服务器上直接执行php脚本,假设在浏览器中訪问,效果就更加直观。

 

须要注意的问题

序列化问题

   假设你熟悉memcache协议。或者你以前用php的memcache来使用ttserver。你可能立即就发现了上面的问题。

比方我们key3是一个数组,可是我们取回来的是一个序列化的字符串,没有自己主动反序列化,在memcached服务器上是会自己主动反序列化的。

    通过上面的telnet演示样例我们能够看到,我们add key1的时候设置flag參数为1,可是我们get回来的时候,返回的flag參数是0,实际上,ttserver是没有存储flag參数的。统一的都使用0,这就造成了php使用时不会自己主动反序列化,当然。假设你使用压缩參数,一样会有这种问题。

    怎么样解决问题,假设要改动ttserver的代码实为不方便。我们全然能够在php。或者我们的client来控制。
比方value我们统一的都序列化后存储,取出来的时候我们再反序列化。

自增问题

//使用ttserver自增
$mem=new Memcache();
$mem->
connect("127.0.0.1",9032);
var_dump($mem->
increment("incr"));
//结果为int(1)
?

>

 

//使用memcache自增
$mem=new Memcache();
$mem->
connect("127.0.0.1",9023);
var_dump($mem->
increment("incr"));
//结果为bool(false)
?>
我们看到相同的代码用在memcache返回了失败(false)。我们能够在php手冊上看到这样一句话“Memcache::increment() does not create an item if it didn't exist.”可是相同的,用在ttserver上就是成功的。这一点要特别注意。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值