激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - Scala 操作Redis使用連接池工具類RedisUtil

Scala 操作Redis使用連接池工具類RedisUtil

2019-06-29 16:25Gavin-Feng Java教程

這篇文章主要介紹了Scala 操作Redis使用連接池工具類RedisUtil,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

本文介紹了Scala 操作Redis,分享給大家,具體如下:

001package com.zjw.util
002 
003import java.util
004 
005import org.apache.commons.pool2.impl.GenericObjectPoolConfig
006import org.apache.logging.log4j.scala.Logging
007import redis.clients.jedis.{Jedis, JedisPool, Response}
008import redis.clients.util.Pool
009 
010object RedisUtil extends Logging {
011 private[this] var jedisPool: Pool[Jedis] = _
012 
013 def main(args: Array[String]): Unit = {
014  val password = "h-{<Fc!yJL87_Zkc8S"
015  val host = "192.168.100.101"
016  val port = 6379
017  val timeout = 1000
018  RedisUtil.init(host, port, timeout, password, 0)
019  //RedisUtil.set("Time".getBytes(), "2018-09-03 09:00:00".getBytes())
020  //val result = RedisUtil.get("Time".getBytes())
021  //println(new String(result))
022  //val map = Map("name"-> "zhangsan","age"-> "21", "gender"-> "male", "id"-> "519099386")
023  //RedisUtil.setCols("hash",map)
024 
025  // val result = RedisUtil.getCols("hash", Array("name", "age", "xx")).map(x => (x._1, new String(x._2)))
026  // logger.info(result)
027  val result = RedisUtil.bulkGetCols(Array("hash", "ss"))
028  logger.info(s"result: ${result}")
029 }
030 
031 def init(host: String, port: Int, timeout: Int, password: String, database: Int = 0): Unit = {
032  jedisPool = new JedisPool(new GenericObjectPoolConfig, host, port, timeout, password, database)
033 }
034 
035 def get(key: Array[Byte]): Array[Byte] = {
036  val jedis = jedisPool.getResource
037  val result: Array[Byte] = jedis.get(key)
038  jedis.close()
039  result
040 }
041 
042 def set(key: Array[Byte], value: Array[Byte]): Boolean = {
043  try {
044   val jedis = jedisPool.getResource
045   jedis.set(key, value)
046   jedis.close()
047   true
048  } catch {
049   case e: Exception => {
050    logger.error(s"寫入數據到Redis出錯: ${e}")
051    false
052   }
053  }
054 }
055 
056 
057 def getCols(key: String,
058       cols: Array[String] = Array.empty
059       ): Map[String, Array[Byte]] = {
060  import scala.collection.JavaConverters._
061  val jedis = jedisPool.getResource
062  var map = Map.empty[String, Array[Byte]]
063  if (cols.length > 0) {
064   val pipe = jedis.pipelined()
065   val response = pipe.hmget(key.getBytes(), cols.map(_.getBytes()): _*)
066   pipe.sync()
067   map = cols.zip(response.get.asScala).toMap.filter(x => x._2 != null)
068   pipe.close()
069  } else {
070   logger.info(s"key: ${key}")
071   val tmpMap: util.Map[Array[Byte], Array[Byte]] = jedis.hgetAll(key.getBytes())
072   map = tmpMap.asScala.toMap.map(x => (new String(x._1), x._2))
073  }
074  jedis.close
075  map
076 }
077 
078 def getCols2(
079        key: String,
080        cols: Array[String] = Array.empty
081       ): Map[String, Array[Byte]] = {
082  val jedis = jedisPool.getResource
083  var map = Map.empty[String, Array[Byte]]
084  if (cols.length > 0) {
085   for (col <- cols) {
086    val value: Array[Byte] = jedis.hget(key.getBytes(), col.getBytes())
087    if (null != value) {
088     map = map + (col -> value)
089    }
090   }
091  } else {
092   logger.info(s"rowkey: ${key}")
093   val tmpMap: util.Map[Array[Byte], Array[Byte]] = jedis.hgetAll(key.getBytes())
094   import scala.collection.JavaConverters._
095   map = tmpMap.asScala.toMap.map(x => (new String(x._1), x._2))
096  }
097  jedis.close
098  map
099 }
100 
101 def bulkGetCols(keys: Array[String],
102         cols: Array[String] = Array.empty
103         ): Map[String, Map[String, Array[Byte]]] = {
104  import scala.collection.JavaConverters._
105  var result: Map[String, Map[String, Array[Byte]]] = Map.empty
106  val jedis = jedisPool.getResource
107  val pipe = jedis.pipelined
108  if (cols.length > 0) {
109   val data = keys.map(x => {
110    pipe.hmget(x.getBytes(), cols.map(_.getBytes()): _*)
111   })
112 
113   pipe.sync
114   pipe.close
115   jedis.close
116 
117   result = keys.zip(data.map(_.get().asScala.toArray).map(cols.zip(_).toMap.filter(null != _._2)))
118    .toMap.filter(_._2.nonEmpty)
119  } else {
120   val data: Array[Response[util.Map[Array[Byte], Array[Byte]]]] = keys.map(x => {
121    pipe.hgetAll(x.getBytes())
122   })
123   pipe.sync
124   pipe.close
125   jedis.close
126 
127   result = keys.zip(data.map(_.get().asScala.map(x => (new String(x._1), x._2)).toMap))
128    .toMap.filter(_._2.nonEmpty)
129  }
130  result
131 }
132 
133 def bulkGetCols2(rowkeys: Array[String],
134         cols: Array[String] = Array.empty
135         ): Map[String, Map[String, Array[Byte]]] = {
136  val jedis = jedisPool.getResource
137  var map = Map.empty[String, Map[String, Array[Byte]]]
138  import scala.collection.JavaConverters._
139  for (rowkey <- rowkeys) {
140   var cellMap = Map.empty[String, Array[Byte]]
141   if (cols.length > 0) {
142    for (col <- cols) {
143     val value = jedis.hget(rowkey.getBytes(), col.getBytes())
144     if (null != value) {
145      cellMap = cellMap + (col -> value)
146     }
147    }
148   } else {
149    logger.info(s"rowkey: ${rowkey}")
150    val tmpMap = jedis.hgetAll(rowkey.getBytes())
151    cellMap = tmpMap.asScala.toMap.map(x => (new String(x._1), x._2))
152   }
153   if (cellMap.nonEmpty) {
154    map = map + (rowkey -> cellMap)
155   }
156  }
157  jedis.close
158  map
159 }
160 
161 def setCols(
162        key: String,
163        fieldValues: Map[String, String]
164       ): Unit = {
165  import scala.collection.JavaConverters._
166  val data = fieldValues.map(element => {
167   (element._1.getBytes(), element._2.getBytes())
168  }).asJava
169  val jedis = jedisPool.getResource
170  jedis.hmset(key.getBytes(), data)
171  jedis.close()
172 }
173 
174}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
1546
主站蜘蛛池模板: 黄色免费网站在线播放 | 一级免费看片 | 欧美一级淫片免费视频1 | 91精品一区二区综合在线 | 国产影院一区 | 欧美日韩爱爱视频 | 毛片免费视频观看 | 国产午夜亚洲精品理论片大丰影院 | 精品一区二区三区在线观看国产 | 国产一级免费不卡 | 国产精品999在线观看 | 国产九色91| 91色琪琪电影亚洲精品久久 | 久草视频在线资源 | 成人羞羞国产免费游戏 | 亚洲欧美日韩久久精品第一区 | 黄网站色成年大片免费高 | 天天操天天骑 | 亚洲成人精品久久久 | av在线直播观看 | 爱操在线 | 天堂成人一区二区三区 | 在线 日本 制服 中文 欧美 | 99精品电影 | 欧洲精品久久 | 91av久久| 国产成人精品午夜视频' | www.54271.com | 久久99精品国产自在现线 | 国产精品免费一区二区三区在线观看 | 午夜精品在线视频 | 国产99久久精品 | 欧美14一15sex性hd | 日韩在线视频免费观看 | 视频一区 在线 | 特色一级黄色片 | 成人福利在线观看 | 精国产品一区二区三区四季综 | 高清不卡一区二区 | 日本aaaa片毛片免费观蜜桃 | 色播视频在线播放 |