日期:2014-05-16 浏览次数:20457 次
介绍这个,其实价值不大,因为详细的文档都在那里呢:http://1978th.net/tokyotyrant/spex.html#protocol 不过,还是要说一下,因为我对TT的协议,颇有些不满。 TT的协议,各位如果仔细看,就会发现,这是一个典型的未经重构的,临时拼凑起来的协议。最初的TT,只考虑了基本的put、putkeep、putcat、out、get、mget等等命令,每个命令都以0xC8开头,然后再加上一个16位二进制数。 put????????? 0×10 putkeep?? 0×11 putcat????? 0×12 putshl????? 0×13 putnr?????? 0×18 out????????? 0×20 get????????? 0×30 mget?????? 0×31 …… 但是,他还有一个misc命令,所有与Table数据类相关的命令,都包含在misc里面,misc的格式是这样的: [magic:2][nsiz:4][opts:4][rnum:4][nbuf:*][{[asiz:4][abuf:*]}:*] magic:? 0xC8 0×90 nsiz:???? name的长度 opts:??? option参数 rnum:?? 后续参数的个数 nbuf:??? name asiz与abuf交替出现,表示每一个参数 因此,我们针对RDBTBL的操作,最终都会调用misc命令。 rdb = RDB::new rdb.open("localhost", 3900) rdb.put("foo", "hop")?????????????????????? ? #发出0xC8 0×10 0×0003 0×0003? "foo"??? "hop" #????? magiccode ksiz????? vsiz?????? kbuf*?? vbuf*三、TokyoTyrant的网络协议
1、简单介绍