以下是Redis中连接池配置的参数含义,以及建议配置:
序号 | 参数名 | 含义 | 默认值 | 使用建议 |
---|---|---|---|---|
1 | maxTotal | 资源池中最大连接数 | 8 | 如我们想访问Redis的QPS达到1000,我们执行一个命令的平均耗时是10ms,那么一个连接的QPS就是100,所以我们需要的连接数就是1000 / 100 = 10,为了有一定富余,我们可以适当增大数目,如maxTotal设置为20。 |
2 | maxIdle | 资源池中允许最大空闲的连接数 | 8 | maxIdle实际上才是业务需要的最大连接数,maxTotal是为了余量,最佳性能是maxIdle = maxTotal,但是如果大多数时间并发量较小,为了防止资源的浪费,可以适当的减小maxIdle。 |
3 | minIdle | 资源池中确保最少空闲的连接数 | 0 | 大于minIdle的连接,会被进行空闲资源检测。应用最初启动时的连接数为0,当我们new Jedis连接时,会创建新的连接。 |
4 | timeout | 连接和读写超时时间 | 无,永远不超时 | |
5 | blockWhenExhausted | 当资源池耗尽后,调用者是否需要等待 | true | 建议使用默认值 |
6 | maxWaitMillis | 当资源池耗尽后,调用者的最大等待时间,单位是毫秒,只有参数blockWhenExhausted设置为true,此参数才会生效 | -1,表示永不超时 | 不建议使用默认值 |
7 | testOnBorrow | 向资源池借用连接时,是否做连接有效性检测,无效连接会被移除 | false | 业务量很大时建议设置为false,因为会多一次ping的开销 |
8 | testOnReturn | 向资源池归还连接时,是否做连接有效性检测,无效连接会被移除 | false | 业务量很大时建议设置为false,因为会多一次ping的开销 |
9 | jmxEnabled | 是否开启jmx监控,可用于监控 | true | 建议使用默认值 |
10 | testWhileIdle | 是否开启空闲资源检测 | false | true |
11 | timeBetweenEvictionRunsMillis | 空闲资源的检测周期(单位为毫秒) | -1,不检测 | 建议设置,周期自行选择,也可以默认使用JedisPoolConfig中的配置30000,也就是30分钟 |
12 | minEvictableIdleTimeMillis | 资源池中资源最小空闲时间(单位为毫秒),达到此值后空闲资源将被移除 | 30000,30分钟 | 可根据自身业务决定,大部分默认值即可,也可以考虑使用JedisPoolConfig中的配置60000 |
13 | numTestsPerEvictionRun | 做空闲资源检测时,每次的采样数 | 3 | 可根据自身应用连接数进行微调,如果设置为-1,就是对所有连接做空闲检测,JedisPoolConfig中的配置为-1。 |