luyuanwan / memcache-client-forjava

Automatically exported from code.google.com/p/memcache-client-forjava
0 stars 0 forks source link

关于keySet的实现~ #8

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
我觉得keySet的实现方式可以优化一下:
目前你的memcached的keySet实现,是采用读取memcached中的items,逐
个进行迭代,判断
key找到需要的key列表的方式实现的;这样的话每一个item都需�
��进行遍历,而且限制大小是
50000个。
其实在进行第一遍的item遍历的时候,只需要遍历出1,2个就行�
��,然后判断如果这个item中包
含了我们需要的key,则再进行第二次的50000次查询遍历,这样
避免了对其他items的遍历操
作,因为针对某一种大小的值,一般情况下都是存放在同一��
�item中的。

目前我是采用这种方式,对于大量的keySet操作,速度提高了��
�少~

//第一遍的只查找对应key的item
Map cacheDump = client.statsCacheDump(dump, 2);
                HashMap firstKey = (HashMap)cacheDump.values().iterator
().next();
                if(firstKey != null && firstKey.size() > 0 && ((String)
firstKey.keySet().iterator().next()).startsWith(cacheName)) {
                        //符合条件的,进行第二次的遍历
                    cacheDump = client.statsCacheDump(dump, 50000);
                }

Original issue reported on code.google.com by polar...@gmail.com on 19 Jun 2009 at 1:42

GoogleCodeExporter commented 9 years ago
这个我在仔细看看,不过是否50000个应该可以自己设置

Original comment by cenwen...@gmail.com on 22 Jun 2009 at 10:34