scala 写一个 jedis 连接池
时间: 2024-05-10 17:20:27 浏览: 12
以下是一个简单的 Jedis 连接池的实现,使用 Scala 语言编写:
```scala
import redis.clients.jedis.JedisPool
import redis.clients.jedis.JedisPoolConfig
object JedisPoolManager {
private val config = new JedisPoolConfig()
config.setMaxTotal(10) // 最大连接数
config.setMaxIdle(5) // 最大空闲连接数
config.setMinIdle(1) // 最小空闲连接数
config.setTestOnBorrow(true) // 取出连接时测试是否可用
config.setTestOnReturn(true) // 归还连接时测试是否可用
private val pool = new JedisPool(config, "localhost", 6379)
def getResource = pool.getResource
def returnResource(jedis: Jedis) = {
if (jedis != null) {
jedis.close()
}
}
}
```
解释:
1. 首先创建一个 `JedisPoolConfig` 对象,用于配置连接池的参数,如最大连接数、最大空闲连接数、最小空闲连接数等。
2. 然后创建一个 `JedisPool` 对象,传入上面创建的 `JedisPoolConfig` 对象和 Redis 服务器的地址和端口号。
3. 定义 `getResource` 方法,用于从连接池中获取一个 Jedis 实例。
4. 定义 `returnResource` 方法,用于归还 Jedis 实例到连接池中。
5. 在 `returnResource` 方法中,使用 `jedis.close()` 方法关闭 Jedis 实例,将其归还到连接池中。注意,如果 Jedis 实例为 null,则不执行任何操作。
使用示例:
```scala
import redis.clients.jedis.Jedis
object Main extends App {
val jedis: Jedis = JedisPoolManager.getResource
jedis.set("foo", "bar")
val result = jedis.get("foo")
println(result)
JedisPoolManager.returnResource(jedis)
}
```
在上面的示例中,首先通过 `JedisPoolManager.getResource` 方法获取一个 Jedis 实例,然后可以使用该实例进行 Redis 操作。完成操作后,通过 `JedisPoolManager.returnResource` 方法将 Jedis 实例归还到连接池中。