Skip to content

Commit e19efee

Browse files
authored
Merge pull request #201 from dskrvk/deprecate_pubsub0204
Deprecate Publisher and Subscriber; code cleanup; update dependencies. Fixes #200
2 parents 754f734 + 10fadc8 commit e19efee

21 files changed

+199
-172
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Add to `Build.scala` or `build.sbt`
3030

3131
```scala
3232
libraryDependencies ++= Seq(
33-
"net.debasishg" %% "redisclient" % "3.4"
33+
"net.debasishg" %% "redisclient" % "3.5"
3434
)
3535
```
3636

@@ -230,6 +230,10 @@ def scatterGatherFirstWithList(opsPerClient: Int)(implicit clients: RedisClientP
230230
}
231231
```
232232

233+
## Using Pub/Sub
234+
235+
See an example implementation using Akka at https://github.com/debasishg/akka-redis-pubsub.
236+
233237
## License
234238

235239
This software is licensed under the Apache 2 license, quoted below.

project/ScalaRedisProject.scala

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ object ScalaRedisProject extends Build
88

99
lazy val commonSettings: Seq[Setting[_]] = Seq(
1010
organization := "net.debasishg",
11-
version := "3.4",
12-
scalaVersion := "2.11.8",
13-
crossScalaVersions := Seq("2.12.1", "2.11.8", "2.10.6"),
11+
version := "3.5",
12+
scalaVersion := "2.11.12",
13+
crossScalaVersions := Seq("2.12.4", "2.11.12", "2.10.7"),
1414

1515
scalacOptions in Compile ++= Seq( "-unchecked", "-feature", "-language:postfixOps", "-deprecation" ),
1616

@@ -21,11 +21,11 @@ object ScalaRedisProject extends Build
2121
name := "RedisClient",
2222
libraryDependencies := Seq(
2323
"commons-pool" % "commons-pool" % "1.6",
24-
"org.slf4j" % "slf4j-api" % "1.7.2",
25-
"org.slf4j" % "slf4j-log4j12" % "1.7.2" % "provided",
26-
"log4j" % "log4j" % "1.2.16" % "provided",
27-
"junit" % "junit" % "4.8.1" % "test",
28-
"org.scalatest" %% "scalatest" % "3.0.0" % "test"),
24+
"org.slf4j" % "slf4j-api" % "1.7.25",
25+
"org.slf4j" % "slf4j-log4j12" % "1.7.25" % "provided",
26+
"log4j" % "log4j" % "1.2.17" % "provided",
27+
"junit" % "junit" % "4.12" % "test",
28+
"org.scalatest" %% "scalatest" % "3.0.4" % "test"),
2929

3030
libraryDependencies += {
3131
if(scalaVersion.value.startsWith("2.12"))

project/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=0.13.12
1+
sbt.version=0.13.17

src/main/scala/com/redis/GeoOperations.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ trait GeoOperations { self: Redis =>
8686
, count.fold[List[Any]](Nil)(b => List("COUNT", b))
8787
, store.fold[List[Any]](Nil)(b => List("STORE", b))
8888
, storeDist.fold[List[Any]](Nil)(b => List("STOREDIST", b))
89-
).flatMap(x=>x)
89+
).flatten
9090
send("GEORADIUS", List(key, longitude, latitude, radius, unit) ++ radArgs)(receive(geoRadiusMemberReply))
9191
}
9292

@@ -123,7 +123,7 @@ trait GeoOperations { self: Redis =>
123123
, count.fold[List[Any]](Nil)(b => List("COUNT", b))
124124
, store.fold[List[Any]](Nil)(b => List("STORE", b))
125125
, storeDist.fold[List[Any]](Nil)(b => List("STOREDIST", b))
126-
).flatMap(x=>x)
126+
).flatten
127127
send("GEORADIUSBYMEMBER", List(key, member, radius, unit) ++ radArgs)(receive(geoRadiusMemberReply))
128128
}
129129

src/main/scala/com/redis/HyperLogLogOperations.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ trait HyperLogLogOperations { self: Redis =>
1515

1616
// PFMERGE (>= 2.8.9)
1717
// Merge existing keys
18-
def pfmerge(destination: Any, sources: Any*) =
18+
def pfmerge(destination: Any, sources: Any*): Boolean =
1919
send("PFMERGE", List(destination) ::: sources.toList)(asBoolean)
2020
}

src/main/scala/com/redis/IO.scala

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ trait IO extends Log {
1515
var in: InputStream = _
1616
var db: Int = _
1717

18-
def connected = {
19-
socket != null && socket.isBound() && !socket.isClosed() && socket.isConnected() && !socket.isInputShutdown() && !socket.isOutputShutdown();
18+
def connected: Boolean = {
19+
socket != null && socket.isBound && !socket.isClosed && socket.isConnected && !socket.isInputShutdown && !socket.isOutputShutdown
2020
}
2121

2222
// Connects the socket, and sets the input and output streams.
@@ -34,42 +34,42 @@ trait IO extends Log {
3434
true
3535
} catch {
3636
case x: Throwable =>
37-
clearFd
37+
clearFd()
3838
throw new RuntimeException(x)
3939
}
4040
}
4141

4242
// Disconnects the socket.
4343
def disconnect: Boolean = {
4444
try {
45-
socket.close
46-
out.close
47-
in.close
48-
clearFd
45+
socket.close()
46+
out.close()
47+
in.close()
48+
clearFd()
4949
true
5050
} catch {
5151
case x: Throwable =>
5252
false
5353
}
5454
}
5555

56-
def clearFd = {
56+
def clearFd(): Unit = {
5757
socket = null
5858
out = null
5959
in = null
6060
}
6161

6262
// Wrapper for the socket write operation.
63-
def write_to_socket(data: Array[Byte])(op: OutputStream => Unit) = op(out)
63+
def write_to_socket(data: Array[Byte])(op: OutputStream => Unit): Unit = op(out)
6464

6565
// Writes data to a socket using the specified block.
66-
def write(data: Array[Byte]) = {
66+
def write(data: Array[Byte]): Unit = {
6767
ifDebug("C: " + parseStringSafe(data))
68-
if (!connected) connect;
68+
if (!connected) connect
6969
write_to_socket(data){ os =>
7070
try {
7171
os.write(data)
72-
os.flush
72+
os.flush()
7373
} catch {
7474
case x: Throwable => throw new RedisConnectionException("connection is closed. write error")
7575
}

src/main/scala/com/redis/Log.scala

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,28 @@ import org.slf4j.LoggerFactory
55
trait Log {
66
private val log = LoggerFactory.getLogger(getClass)
77

8-
def ifTrace(message: => String) = if (log.isTraceEnabled) trace(message)
9-
def trace(message:String, values:AnyRef*) =
8+
def ifTrace(message: => String): Unit = if (log.isTraceEnabled) trace(message)
9+
def trace(message:String, values:AnyRef*): Unit =
1010
log.trace(message, values)
11-
def trace(message:String, error:Throwable) = log.trace(message, error)
11+
def trace(message:String, error:Throwable): Unit = log.trace(message, error)
1212

13-
def ifDebug(message: => String) = if (log.isDebugEnabled) debug(message)
14-
def debug(message:String, values:AnyRef*) =
13+
def ifDebug(message: => String): Unit = if (log.isDebugEnabled) debug(message)
14+
def debug(message:String, values:AnyRef*): Unit =
1515
log.debug(message, values)
16-
def debug(message:String, error:Throwable) = log.debug(message, error)
16+
def debug(message:String, error:Throwable): Unit = log.debug(message, error)
1717

18-
def ifInfo(message: => String) = if (log.isInfoEnabled) info(message)
19-
def info(message:String, values:AnyRef*) =
18+
def ifInfo(message: => String): Unit = if (log.isInfoEnabled) info(message)
19+
def info(message:String, values:AnyRef*): Unit =
2020
log.info(message, values)
21-
def info(message:String, error:Throwable) = log.info(message, error)
21+
def info(message:String, error:Throwable): Unit = log.info(message, error)
2222

23-
def ifWarn(message: => String) = if (log.isWarnEnabled) warn(message)
24-
def warn(message:String, values:AnyRef*) =
23+
def ifWarn(message: => String): Unit = if (log.isWarnEnabled) warn(message)
24+
def warn(message:String, values:AnyRef*): Unit =
2525
log.warn(message, values)
26-
def warn(message:String, error:Throwable) = log.warn(message, error)
26+
def warn(message:String, error:Throwable): Unit = log.warn(message, error)
2727

28-
def ifError(message: => String) = if (log.isErrorEnabled) error(message)
29-
def error(message:String, values:AnyRef*) =
28+
def ifError(message: => String): Unit = if (log.isErrorEnabled) error(message)
29+
def error(message:String, values:AnyRef*): Unit =
3030
log.error(message, values)
31-
def error(message:String, error:Throwable) = log.error(message, error)
32-
}
31+
def error(message:String, error:Throwable): Unit = log.error(message, error)
32+
}

src/main/scala/com/redis/NodeOperations.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,13 @@ trait NodeOperations { self: Redis =>
4141
// SLAVEOF
4242
// The SLAVEOF command can change the replication settings of a slave on the fly.
4343
def slaveof(options: Any): Boolean = options match {
44-
case (h: String, p: Int) => {
44+
case (h: String, p: Int) =>
4545
send("SLAVEOF", List(h, p))(asBoolean)
46-
}
47-
case _ => setAsMaster
46+
case _ => setAsMaster()
4847
}
4948

5049
@deprecated("use slaveof", "1.2.0") def slaveOf(options: Any): Boolean = slaveof(options)
5150

52-
private def setAsMaster: Boolean =
51+
private def setAsMaster(): Boolean =
5352
send("SLAVEOF", List("NO", "ONE"))(asBoolean)
5453
}

src/main/scala/com/redis/Operations.scala

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ trait Operations { self: Redis =>
2626
, (if (desc) List("DESC") else Nil)
2727
, (if (alpha) List("ALPHA") else Nil)
2828
, by.map(b => List("BY", b)).getOrElse(Nil)
29-
, get.map(g => List("GET", g)).flatMap(x=>x)
30-
).flatMap(x=>x)
29+
, get.flatMap(g => List("GET", g))
30+
).flatten
3131
}
3232

3333
// SORT with STORE
@@ -128,12 +128,11 @@ trait Operations { self: Redis =>
128128
// SELECT (index)
129129
// selects the DB to connect, defaults to 0 (zero).
130130
def select(index: Int): Boolean =
131-
send("SELECT", List(index))(asBoolean match {
132-
case true => {
133-
db = index
134-
true
135-
}
136-
case _ => false
131+
send("SELECT", List(index))(if (asBoolean) {
132+
db = index
133+
true
134+
} else {
135+
false
137136
})
138137

139138

src/main/scala/com/redis/Pool.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ private [redis] class RedisClientFactory(val host: String, val port: Int, val da
88
extends PoolableObjectFactory[RedisClient] {
99

1010
// when we make an object it's already connected
11-
def makeObject = {
11+
def makeObject: RedisClient = {
1212
new RedisClient(host, port, database, secret, timeout)
1313
}
1414

@@ -20,7 +20,7 @@ private [redis] class RedisClientFactory(val host: String, val port: Int, val da
2020

2121
// noop: we want to have it connected
2222
def passivateObject(rc: RedisClient): Unit = {}
23-
def validateObject(rc: RedisClient) = rc.connected == true
23+
def validateObject(rc: RedisClient): Boolean = rc.connected
2424

2525
// noop: it should be connected already
2626
def activateObject(rc: RedisClient): Unit = {}
@@ -37,7 +37,7 @@ object RedisClientPool {
3737
class RedisClientPool(val host: String, val port: Int, val maxIdle: Int = 8, val database: Int = 0, val secret: Option[Any] = None, val timeout : Int = 0,
3838
val maxConnections: Int = RedisClientPool.UNLIMITED_CONNECTIONS, val whenExhaustedBehavior: Byte = RedisClientPool.WHEN_EXHAUSTED_BLOCK, val poolWaitTimeout: Long = 3000) {
3939
val pool = new GenericObjectPool(new RedisClientFactory(host, port, database, secret, timeout), maxConnections, whenExhaustedBehavior, poolWaitTimeout, maxIdle, false, true)
40-
override def toString = host + ":" + String.valueOf(port)
40+
override def toString: String = host + ":" + String.valueOf(port)
4141

4242
def withClient[T](body: RedisClient => T) = {
4343
val client = pool.borrowObject
@@ -49,14 +49,14 @@ class RedisClientPool(val host: String, val port: Int, val maxIdle: Int = 8, val
4949
}
5050

5151
// close pool & free resources
52-
def close = pool.close
52+
def close: Unit = pool.close()
5353
}
5454

5555
/**
5656
*
57-
* @param poolname must be unique
57+
* @param node
5858
*/
5959
class IdentifiableRedisClientPool(val node: ClusterNode)
6060
extends RedisClientPool (node.host, node.port, node.maxIdle, node.database, node.secret,node.timeout){
61-
override def toString = node.nodename
61+
override def toString: String = node.nodename
6262
}

0 commit comments

Comments
 (0)