java-使用Jedis Pool时管道破裂
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用Jedis Pool时管道破裂,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2062字,纯文字阅读大概需要3分钟。
内容图文
我正在使用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;
}}
解决方法:
似乎是超时问题.
查看该线程:Configure Jedis timeout
还有这个讨论:https://github.com/xetorthio/jedis/issues/185
所以我会尝试使用超时参数实例化JedisPool
(即https://github.com/xetorthio/jedis/blob/master/src/main/java/redis/clients/jedis/JedisPool.java#L201,但还有许多其他构造函数)
并以redis设置CONFIG SET timeout 600(例如10分钟超时).
编辑
JedisPool超时似乎以毫秒为单位.
内容总结
以上是互联网集市为您收集整理的java-使用Jedis Pool时管道破裂全部内容,希望文章能够帮你解决java-使用Jedis Pool时管道破裂所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。