java jedispool实例_java-使用Jedis Pool时管道破裂

在使用Java的JedisPool与Redis进行大量并发插入/读取操作时,遇到JedisConnectionException异常,提示SocketException:管道破裂。代码示例展示了如何初始化JedisPool配置,以及在插入和读取数据时的问题。尝试了各种解决方案,但问题仍然存在。
摘要由CSDN通过智能技术生成

我正在使用Jedis在Redis中执行很多插入/读取操作.

Redis服务器正在使用默认配置.

当我开始使用几个线程时出现问题,例外是:

redis.clients.jedis.exceptions.JedisConnectionException:java.net.SocketException:管道quebrado(写入失败)

我已经搜索了很多有关此问题的信息,但找不到它的原因或已解决.我用来执行这些测试的代码如下:

public class RedisFacade {

private static RedisFacade instancia = null;

// Initialize the Connection

final JedisPoolConfig poolConfig = buildPoolConfig();

JedisPool pool = new JedisPool(poolConfig, "localhost");

Jedis jedis;

int i = 0;

private RedisFacade() {

}

public static RedisFacade getInstancia() {

if (instancia == null) {

instancia = new RedisFacade();

}

return instancia;

}

// retorna um cliente jedis da pool

public Jedis getDB() {

if (jedis == null) {

jedis = pool.getResource();

}

return jedis;

}

//inserting

public void insert(Document d) {

String key = i + d.getString("date") + d.getString("time");

String value = d.toString();

this.getDB().set(key, value);

i++;

}

//reading

public void read(String date, String time) {

Object doc = this.getDB().get(i + date + time);

i++;

System.out.println(doc);

}

public void destroyPool() {

this.pool.destroy();

}

private JedisPoolConfig buildPoolConfig() {

final JedisPoolConfig poolConfig = new JedisPoolConfig();

poolConfig.setMaxTotal(1100);

poolConfig.setMaxIdle(16);

poolConfig.setMinIdle(16);

poolConfig.setTestOnBorrow(true);

poolConfig.setTestOnReturn(true);

poolConfig.setTestWhileIdle(true);poolConfig.setMinEvictableIdleTimeMillis(Duration.ofSeconds(60).toMillis());

poolConfig.setTimeBetweenEvictionRunsMillis(Duration.ofSeconds(30).toMillis());

poolConfig.setNumTestsPerEvictionRun(3);

poolConfig.setBlockWhenExhausted(true);

return poolConfig;

}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值