jedis的hscan方法出现内存溢出问题

jedis的hscan方法出现内存溢出问题jedis的hscan方法出现内存溢出问题解决方法:下面是我使用hscan方法错误的写法,使用了递归,数据大的时候导致java代码出现StackOverflow的内存溢出错误:publicbooleanhscan(intdbIndex,Stringkey,intpageSize){Map<String,Integer>mapList=newHas…

大家好,欢迎来到IT知识分享网。

jedis的hscan方法出现内存溢出问题

 

解决方法:

下面是我使用hscan方法错误的写法,使用了递归,数据大的时候导致java代码出现StackOverflow的内存溢出错误:

public  boolean hscan(int dbIndex,String key,int pageSize){

Map<String, Integer> mapList=new HashMap<String, Integer>();

   Jedis jedis = null;    

   try {

   jedis = Redis.getJedis();

   jedis.select(dbIndex);

   ScanParams sp = new ScanParams();

     sp.count(pageSize);//每次多少条      

     loop(mapList,key, jedis, “0”, sp);

     

} catch (Exception e) {

e.printStackTrace();

logger.error(e.getMessage());

return false;

}finally{

// 返还到连接池

if (jedis != null) {

jedis.close();

 

}

}

return true;

   }

   

   

public  void loop(Map<String, Integer> mapList,String key, Jedis jedis, String cursor,

ScanParams sp) {

try {

 

ScanResult<Entry<String, String>> map = jedis.hscan(key, cursor, sp);

cursor = map.getStringCursor();

for (Entry<String, String> en : map.getResult()) {

//业务代码

 

}

if (!”0″.equals(cursor)) {

loop(mapList,key, jedis, cursor, sp);

}

 

} catch (Exception e) {

logger.error(e.getMessage());

e.printStackTrace();

 

}

 

}

 

 

正确方法:http://www.yayihouse.com/yayishuwu/chapter/1820

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24133.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信