编辑RedisUtil.scala
package utils
import redis.clients.jedis.{JedisPool, JedisPoolConfig}
object RedisUtil {
// 1 配置redis连接器redisHost
val host = "10.25.34.103"
// 2 设置端口号redisPort
val port = 6379
// 3 设置连接超时redisTimeout(单位:ms)
val timeout = 30000
// 4 配置JedisPool属性
val config = new JedisPoolConfig
// 5 最大连接数
config.setMaxTotal(200)
// 6 最大空闲连接数, 默认8个
config.setMaxIdle(50)
// 7 最小空闲连接数, 默认0
config.setMinIdle(0)
// 8 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted)
// 如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1
config.setMaxWaitMillis(10000)
// 9 在获取连接的时候检查有效性, 默认false
config.setTestOnBorrow(true)
// 10 return 一个jedis实例给pool时,是否检查连接可用性(ping())
config.setTestOnReturn(true)
// 11 create 一个jedis实例给pool时,是否检查连接可用性
config.setTestOnCreate(true)
// 12 testWhileIdle:
// 如果为true,表示有一个idle object evitor线程对idle object进行扫描,
// 如果validate失败,此object会被从pool中drop掉;
// 这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;
config.setTestWhileIdle(true)
// 13 TimeBetweenEvictionRunsMillis:
// 表示idle object evitor两次扫描之间要sleep的毫秒数;
config.setTimeBetweenEvictionRunsMillis(30000)
// 14 numTestsPerEvictionRun:
// 表示idle object evitor每次扫描的最多的对象数;
config.setNumTestsPerEvictionRun(10)
// 15 minEvictableIdleTimeMillis:默认值30min
// 表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;
// 这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;
config.setMinEvictableIdleTimeMillis(60000)
// 16 创建连接池
lazy val pool = new JedisPool(config, host, port, timeout)
// 17 创建程序崩溃时,回收资源的线程
lazy val hook = new Thread {
// 18 ctrl o 方法复写
override def run(): Unit = {
pool.destroy()
}
}
sys.addShutdownHook(hook)
}