当前位置: 首页 > 知识库问答 >
问题:

Redis客户端:当池大小耗尽时创建新连接

牟星火
2023-03-14

我们在应用程序中使用redis进行缓存。

我们的目标是在池大小耗尽或超过某个阈值时创建新的Redis连接,以便将空闲连接的数量保持在最小。通过这种方式,redis服务器资源被分配给真正需要它的应用服务器

在我们的java应用程序中,我们使用的是spring的JedisConnectionFactory of spring数据redis 1.4.2,它在内部使用了Jedis 2.6.2和commons pool 2.0。

GenericObjectpool的最新版本没有动态增长池大小的选项。(共享池的早期版本有whenExhaustAction选项)

在绝地武士中,我也找不到通过自定义对象池的方法。

请建议我们如何实现这一目标。其他Redis客户端是否支持此功能?

共有1个答案

秋阳旭
2023-03-14

如果将maxTotal属性设置为负值,则池中的实例数将没有限制。您可以将其与maxIdle设置相结合,以确保在任何给定时间都不超过maxIdle空闲连接。

 类似资料:
  • 问题内容: 我正在设计一个将Redis用作数据库的Web服务,并且我想了解使用Redis与StackService客户端连接的最佳实践。 关键是我一直在阅读有关Redis的文章,发现与服务器交互的最佳方法是使用单个并发连接。 问题是,尽管每当Web客户端向Web服务发出请求时,我都会使用 PooledRedisClientManager ,但我又获得了一个到Redis服务器的连接客户端(打开的连接

  • 我在项目中使用ApacheTomcat JDBC连接池。我很困惑,因为在重负下,我一直看到以下错误: 我的期望是,使用池,新连接的请求将被保留在队列中,直到连接可用。相反,当池达到容量时,请求似乎会被拒绝。这种行为可以改变吗? 谢谢, 达尔 这是我的池配置:

  • 我有使用hikari池创建连接池的Spring启动应用程序。我们正在使用postgres sql用于db。当我以低qps命中系统时,请求需要大约200毫秒来执行。当部署一个pod并且qps为15时,事情保持良好状态。但是一旦我将qps增加到20,请求就开始需要大约10秒来处理,连接池变空(java.sql.SQLTransientConntion异常:菲尼克斯-连接不可用,请求在30183毫秒后超

  • 我有一个Spring启动,Hibernate使用java应用程序。我部署它在一个jetty webserver与多个实例.如果我有太多(大于10)很多实例我得到 许多连接(10x实例)显示为空闲 ps: 实例的Hikari跟踪日志: 设置 没有记录任何有趣的事情。我认为这看起来很有趣-连接不可用 有什么办法可以调试这个吗?我也在java 7上,所以hikari 2.4.7

  • 问题内容: 我在ElastiCache上运行Redis集群。 多个进程连接到Redis集群。每个进程都位于Docker容器中。流程不尽相同-我有一个流程,一个流程等。 正常运行几天后,连接到Redis时,我的某些进程开始超时。当我进入受影响的容器并尝试通过到达群集时,与群集的连接超时。这告诉我,问题不仅影响过程,而且影响整个容器。 当我从任何其他容器中使用时,连接都不会出现问题。 我的进程会根据需

  • 我在应用程序中使用连接池(snaq.db.ConnectionPool)。连接池的初始化方式如下: 使用的DB池值是: 我的应用程序在某处泄漏连接(连接未被释放),因此连接池已耗尽。我现在已经修好了密码。 空闲超时后连接不应该关闭吗?如果这不是正确的假设,有没有办法关闭打开的空闲连接(仅通过java代码)?