浏览 2682 次
精华帖 (0) :: 良好帖 (14) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-20
1, queue/stack name expiration length 创建或修改 name 集合名称 以此为分布式依据. expiration 过期时间 <0时由过期为元素的过期时间 0时删除此集合(更新时) >0时元素的过期为 此值 2, queue/stack name expiration length key flags exp vlen 创建及添加元素, 创建动作只发生在第一次调用 name expiration length 同上 key 元素的key 存储时会同集合名称组合一起存时Mem,格式为:name_key,所以用此格式为key也可以直接操作该元素,并且集合也适应此元素的变化. flags exp vlen 分别为Mem的常规属性. 只是在集合的expiration大于0时,exp设置无效,始终等于expiration值. 3, pops/pop name flags start len 范围取元素 是实现pop peek popTail peekTail remove的基础 name 集合名称 flags 获取方式 1获取并删除 0只获取 start 集合开始的位置 从0开始 支持负数, -1为最后位. len 从start开始的长度 4, list name 全部取 5, size name 集合当前元素数 6, clear name 清空所有元素 根据上面几种命令总结操作如下: 1,限定或不限定长度的存或取 适应场景:最新文章,好友动态 ,分页显示 2,支持某个元素的或存或取或删或修改 适应场景:评论,留言等. 3,集合元素同时或不同时失效, 4,Queue适应最旧数据 5,Stack适应最新数据. C源码: svn checkout http://qmemcached.googlecode.com/svn/trunk/main java客户端: svn checkout http://qmemcached.googlecode.com/svn/trunk/java_client 不完全测试性能: get 20 items escape time:16 get 30 items escape time:47 get 50 items escape time:47 get 100 items escape time:109 get 150 items escape time:110 get 200 items escape time:125 get 300 items escape time:178 get 400 items escape time:218 get 500 items escape time:234 get 600 items escape time:297 get 700 items escape time:328 get 1000 items escape time:641 相较于TT&TC的Btree Queue TT&TC(Btree) 2023403 itmes getQueue 10 elements escape time:16 TT&TC(Btree) 2023403 itmes getQueue 30 elements escape time:31 TT&TC(Btree) 2023403 itmes getQueue 40 elements escape time:47 TT&TC(Btree) 2023403 itmes getQueue 60 elements escape time:78 TT&TC(Btree) 2023403 itmes getQueue 110 elements escape time:110 TT&TC(Btree) 2023403 itmes getQueue 180 elements escape time:125 TT&TC(Btree) 2023403 itmes getQueue 330 elements escape time:145 总的说集合取操作和TT&TC相差无几. ps:TT&TC的Queue是通过Lua扩展来实现的.如本身实现的话还会更快些. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-10-10
何必这么麻烦..直接用redis不就得了
|
|
返回顶楼 | |
发表时间:2010-10-12
貌似没什么人关注,楼主这个可以提交给memcached作为patch看看。
|
|
返回顶楼 | |
发表时间:2010-11-09
kula 写道 何必这么麻烦..直接用redis不就得了
redis的过期方式是针对整个集合的, 而且设置expire后再更新操作时会清除集合所有keys,而此项目集合元素是独立存在的,独立存在的意思是可以单独过期,删除,获取,更新等操作. 同时集合也会作相应改变的.另外集合还能实现定长集合.超过长度的集合或舍去或不添加不进集合. |
|
返回顶楼 | |