Scala 操作操作Redis使用连接池工具类使用连接池工具类RedisUtil
主要介绍了Scala 操作Redis使用连接池工具类RedisUtil,文中通过示例代码介绍的非常详细,对大家的学习或
者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
本文介绍了Scala 操作Redis,分享给大家,具体如下:
package com.zjw.util
import java.util
import org.apache.commons.pool2.impl.GenericObjectPoolConfig
import org.apache.logging.log4j.scala.Logging
import redis.clients.jedis.{Jedis, JedisPool, Response}
import redis.clients.util.Pool
object RedisUtil extends Logging {
private[this] var jedisPool: Pool[Jedis] = _
def main(args: Array[String]): Unit = {
val password = "h-{<Fc!yJL87_Zkc8S"
val host = "192.168.100.101"
val port = 6379
val timeout = 1000
RedisUtil.init(host, port, timeout, password, 0)
//RedisUtil.set("Time".getBytes(), "2018-09-03 09:00:00".getBytes())
//val result = RedisUtil.get("Time".getBytes())
//println(new String(result))
//val map = Map("name"-> "zhangsan","age"-> "21", "gender"-> "male", "id"-> "519099386")
//RedisUtil.setCols("hash",map)
// val result = RedisUtil.getCols("hash", Array("name", "age", "xx")).map(x => (x._1, new String(x._2)))
// logger.info(result)
val result = RedisUtil.bulkGetCols(Array("hash", "ss"))
logger.info(s"result: ${result}")
}
def init(host: String, port: Int, timeout: Int, password: String, database: Int = 0): Unit = {
jedisPool = new JedisPool(new GenericObjectPoolConfig, host, port, timeout, password, database)
}
def get(key: Array[Byte]): Array[Byte] = {
val jedis = jedisPool.getResource
val result: Array[Byte] = jedis.get(key)
jedis.close()
result
}
def set(key: Array[Byte], value: Array[Byte]): Boolean = {
try {
val jedis = jedisPool.getResource
jedis.set(key, value)
jedis.close()
true
} catch {
case e: Exception => {
logger.error(s"写入数据到Redis出错: ${e}")
false
}
}
}
def getCols(key: String,
cols: Array[String] = Array.empty
): Map[String, Array[Byte]] = {
import scala.collection.JavaConverters._
val jedis = jedisPool.getResource
var map = Map.empty[String, Array[Byte]]
if (cols.length > 0) {
val pipe = jedis.pipelined()
val response = pipe.hmget(key.getBytes(), cols.map(_.getBytes()): _*)
pipe.sync()
map = cols.zip(response.get.asScala).toMap.filter(x => x._2 != null)
pipe.close()
} else {
logger.info(s"key: ${key}")
val tmpMap: util.Map[Array[Byte], Array[Byte]] = jedis.hgetAll(key.getBytes())
map = tmpMap.asScala.toMap.map(x => (new String(x._1), x._2))
评论0