redis 客户端 Jedis

Jedis 直连
Jedis(String host,int port ,int connectionTimeout ,int soTimeout)

jedis.set

jedis连接池

jedis 配置优化

参数名 含义 默认值 使用建议
maxTotal 资源池最大连接数 8
maxIdle 资源池允许最大空闲连接数 8
minIdle 资源池确保最少空闲连接数 0
jmxEnable 是否开启jmx监控 true 建议开启
blockWhenExhausted 当资源池用尽后,调用者是否要等待 true 建议使用默认值
maxWaitMillis 当资源连接池用尽后,调用者的最大等待时间(毫秒) -1:永不超时 不建议使用
testOnBorrow 向资源池借用连接时是否做连接有效性检测(ping),无效连接会被移除 false 建议false
testOnReturn 向资源池归还连接时是否做连接有效性检测(ping),无效连接会被移除 false 建议false
  1. 适合的maxTotal
  1. 命令平均执行时间0.1ms =0.001s。
  2. 业务需要50000QPS
  3. maxTotal 理论值=0.001*50000 =50个 。实际值要偏大一些
  1. 业务希望Redis并发量
  2. 客户端执行命令时间
  3. Redis资源:例如nodes(应用个数)*maxTotal 是不能超过redis的最大连接数。(config get maxclients)
  4. 资源开销:例如虽然希望控制空闲连接,但是不希望因为连接池的频繁释放创建连接造成不必要开销
  1. 适合的maxIdle和minIdle
    建议maxIdle =maxTotal
  • 减少创建新连接的开销
    建议预热minIdle
  • 建少第一次启动后的新连接开销

常见问题

  1. Timeout waiting for idle object
  2. Pool exhausted

问题思路

  1. 慢查询阻塞:池子连接都被hang住
  2. 资源池参数不合理:例如QPS高,池子小
  3. 连接泄露(没有close()):此类问题比较难定位,例如client list ,netstat 等
  4. DNS 异常

你可能感兴趣的:(redis 客户端 Jedis)