Memcache源码阅读(2)---命令行使用

19 篇文章 0 订阅
10 篇文章 0 订阅

我看的源码版本是1.2.4

使用方法

编译安装,运行memcached

➜  memcached-1.2.4 ./memcached

telnet 到memcached监听的端口,通过命令行访问memcache

➜  ~ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
1 > get a   
2 < END
3 > set a 0 0 4
4 > 1234
5 < STORED
6 > get a
7 < VALUE a 0 4
8 < 1234
9 < END
10 > add a 0 0 4
11 > 1235
12 < NOT_STORED
13 > set a 0 0 4
14 > 1234
15 < STORED
16 > sett a 0 0 4
17 < ERROR
18 > set a 0 0 4
19 > 12345
20 < CLIENT_ERROR bad data chunk
21 < ERROR
...

因为我运行memcached没有加任何选项,使用默认监听端口11211。telnet到memcached然后可以通过一些命令来访问到memcached的数据。

上面的前面带>的行是我输入的行,<的行是memcached返回的行。

我一开始运行memcached,里面应该是没有缓存任何数据的,我尝试用命令get a来获得key为a的值,返回END表示无数据返回,该key无值。

然后我就运行set a 0 0 4设置一个值1234,再通过get a就可以获取到VALUE a 0 4\n12345

命令的含义是 <command> <key> <flags> <exptime> <bytes>\r\n<data block>\r\n我要设置一个key为a的长度为4的data,回车后输入1234表示那个key对应的value就是1234。

具体还有哪些命令可以容易的在网上找到。

这里我想说的是,关于memcached读命令的一些细节。从16-21行都是我输入的一些错误的命令,由这些命令可以看出memcached会根据用户输入的命令来进行一些状态转移,来获取接下来的数据。

第16行,这是一个错误的输入命令,memcached就直接返回错误,而没有等待接下来的数据。第18行,这是一个正确的命令,可是他意思是接下来要传输4个字节的数据块,可是我输入的事5个字节,服务器读到了我输入的数据与我生命的数据不一样,所以就返回bad data chunk错误。

memcached接收到第一个命令的时候就会改变自己的状态,每个状态对应跟着接下来应该如何处理,对于memcached有哪些状态,我在后面再说。

总结

我这里就简单的说了一下memcahced的命令行用法,对memcached是怎么处理用户输入还卖了个关子,说memcached接受到用户一个命令的时候会转移自己的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值