首页 > 编程知识 正文

不能使用对象连接和嵌入怎么解决,cannot get jedis connection

时间:2023-05-03 06:03:11 阅读:34365 作者:343

jedis使用单节点模式,统一spring配置如下:

bean id=' jedis poolconfig ' class=' redis.clients.jedis.jedis poolconfig '

property name=' max total ' value=' 600 ' /

属性名称=' maxidle ' value=' 300 ' /

property name=' maxwaitmillis ' value=' 1000 ' /

property name=' testonborrow ' value=' true ' /

/bean

bean id=' Jedi spool ' class=' redis.clients.jedis.Jedi spool '

构造函数- arg index='0' ref=' jedis poolconfig ' /

构造函数- arg index='1' value=' 127.0.0.1 ' /

构造函数- arg index='2' value=' 6379 ' type=' int ' /

构造函数- arg index='3' value=' 60000 ' type=' int ' /

构造函数- arg index='4' value=' 123456 ' /

/bean

工具代码如下:

@Resource

私密Jedi spool Jedi spool;

@Override

公共jedis get jedis

返回Jedi spool.get resource (;

}

业务代码如下:

for(intI=2000; i3000; I ) {

Jedis jedis=redisDao.getJedis (;

Jedis.set(user: ) I,jedis.toString ) );

system.out.println(Jedis;

set.add(Jedis.tostring ) );

}

在上面的代码中,循环600次会报告无法连接的错误,但600正好是正在配置的连接数,jedis连接在使用结束后不会释放(由于在报告错误后再次请求此方法,因此一个连接也无法断开)

当添加到代码循环时

jedis.close (;

效果不同。 可以在循环中退出,打印的jedis对象是同一目标。

在这种情况下,在业务代码层使用结束后关闭,或者单独一次封装所有jedis方法,并在封装的代码中进行闭合连接,不是没有其他好方法吗?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。