Jedis
Jedis
使用 Java 操作 Redis 的工具
Jedis 实例不是线程安全的,所以不可以多个线程共用一个 Jedis 实例,但是创建太多的实现也不好因为这意味着会建立很多 sokcet 连接
maven
1 | <dependency> |
JedisPool
参考:jedis: 连接池 (JedisPool) 使用示例
- JedisPool 是一个线程安全的网络连接池。可以用 JedisPool 创建一些可靠 Jedis 实例,可以从池中获取 Jedis 实例,使用完后再把 Jedis 实例还回 JedisPool。这种方式可以避免创建大量 socket 连接并且会实现高效的性能
JedisPoolConfig
依赖于org.apache.commons.pool2
maxTotal
最大连接数,默认 8 个。如果赋值为 - 1,则表示不限制;如果 pool 已经分配了 maxTotal 个 jedis 实例,则此时 pool 的状态为 exhausted。
maxIdle
最大空闲连接数,默认 8 个。控制一个 pool 最多有多少个状态为 idle (空闲的) 的 jedis 实例。
minIdle
最小空闲连接数,默认 0 个。
maxWaitMillis
表示当 borrow (引入) 一个 jedis 实例时,最大的等待时间,如果超过等待时间,则直接抛出 JedisConnectionException。
testOnBorrow
在 borrow 一个 jedis 实例时,是否提前检查连接可用性(ping ())操作;如果为 true,则得到的 jedis 实例均是可用的。默认为 false。
blockWhenExhausted
连接耗尽时是否阻塞,false 报异常,ture 阻塞直到超时,默认 true。
testOnReturn
在 return 一个 jedis 实例时,是否检查连接可用性(ping ()),默认为 false。
testWhileIdle
如果为 true,表示有一个 idle object evitor 线程对 idle object 进行扫描,如果 validate 失败,此 object 会被从 pool 中 drop 掉。
这一项只有在 timeBetweenEvictionRunsMillis 大于 0 时才有意义。
JedisPoolConfig 中默认设置为 true。
minEvictableIdleTimeMillis
表示一个对象至少停留在 idle 状态的最短时间,然后才能被 idle object evitor 扫描并驱逐。
这一项只有在 timeBetweenEvictionRunsMillis 大于 0 时才有意义。
JedisPoolConfig 中默认设置为 60000。
timeBetweenEvictionRunsMillis
表示 idle object evitor 两次扫描之间要 sleep 的毫秒数.
JedisPoolConfig 中默认设置为 30000。
NumTestsPerEvictionRun
表示 idle object evitor 每次扫描的最多的对象数。
JedisPoolConfig 中默认设置为 - 1。
1 | public JedisPoolConfig() { |
softMinEvictableIdleTimeMillis
在 minEvictableIdleTimeMillis 基础上,加入了至少 minIdle 个对象已经在 pool 里面了。
如果为 - 1,evitor 不会根据 idle time 驱逐任何对象。
如果 minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在 timeBetweenEvictionRunsMillis 大于 0 时才有意义。
lifo
borrowObject 返回对象时,是采用 DEFAULT_LIFO(last in first out,即类似 cache 的最频繁使用队列),如果为 False,则表示 FIFO 队列。