Implemented ZRANGEBYSCORE
This commit is contained in:
@@ -10,7 +10,7 @@ Jedis is a WORK IN PROGRESS.
|
||||
- Sharding
|
||||
- Persistence control commands
|
||||
- Remote server control commands
|
||||
- The ZRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE commands
|
||||
- The ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE commands
|
||||
|
||||
But stay close because things are going fast and all this will be implemented soon!
|
||||
|
||||
@@ -22,7 +22,7 @@ But stay close because things are going fast and all this will be implemented so
|
||||
- Commands operating on hashes
|
||||
- Commands operating on lists
|
||||
- Commands operating on sets
|
||||
- Commands operating on sorted sets (not ZRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE)
|
||||
- Commands operating on sorted sets (not ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE)
|
||||
- Transactions
|
||||
- Pipelining
|
||||
- Publish/Subscribe
|
||||
|
||||
@@ -439,4 +439,28 @@ public class Client extends Connection {
|
||||
public void zcount(String key, double min, double max) {
|
||||
sendCommand("ZCOUNT", key, String.valueOf(min), String.valueOf(max));
|
||||
}
|
||||
|
||||
public void zrangeByScore(String key, double min, double max) {
|
||||
sendCommand("ZRANGEBYSCORE", key, String.valueOf(min), String
|
||||
.valueOf(max));
|
||||
}
|
||||
|
||||
public void zrangeByScore(String key, double min, double max, int offset,
|
||||
int count) {
|
||||
sendCommand("ZRANGEBYSCORE", key, String.valueOf(min), String
|
||||
.valueOf(max), "LIMIT", String.valueOf(offset), String
|
||||
.valueOf(count));
|
||||
}
|
||||
|
||||
public void zrangeByScoreWithScores(String key, double min, double max) {
|
||||
sendCommand("ZRANGEBYSCORE", key, String.valueOf(min), String
|
||||
.valueOf(max), "WITHSCORES");
|
||||
}
|
||||
|
||||
public void zrangeByScoreWithScores(String key, double min, double max,
|
||||
int offset, int count) {
|
||||
sendCommand("ZRANGEBYSCORE", key, String.valueOf(min), String
|
||||
.valueOf(max), "LIMIT", String.valueOf(offset), String
|
||||
.valueOf(count), "WITHSCORES");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -411,27 +411,13 @@ public class Jedis {
|
||||
|
||||
public Set<Tuple> zrangeWithScores(String key, int start, int end) {
|
||||
client.zrangeWithScores(key, start, end);
|
||||
List<String> membersWithScores = client.getMultiBulkReply();
|
||||
Set<Tuple> set = new LinkedHashSet<Tuple>();
|
||||
Iterator<String> iterator = membersWithScores.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
set
|
||||
.add(new Tuple(iterator.next(), Double.valueOf(iterator
|
||||
.next())));
|
||||
}
|
||||
Set<Tuple> set = getTupledSet();
|
||||
return set;
|
||||
}
|
||||
|
||||
public Set<Tuple> zrevrangeWithScores(String key, int start, int end) {
|
||||
client.zrevrangeWithScores(key, start, end);
|
||||
List<String> membersWithScores = client.getMultiBulkReply();
|
||||
Set<Tuple> set = new LinkedHashSet<Tuple>();
|
||||
Iterator<String> iterator = membersWithScores.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
set
|
||||
.add(new Tuple(iterator.next(), Double.valueOf(iterator
|
||||
.next())));
|
||||
}
|
||||
Set<Tuple> set = getTupledSet();
|
||||
return set;
|
||||
}
|
||||
|
||||
@@ -550,4 +536,40 @@ public class Jedis {
|
||||
client.zcount(key, min, max);
|
||||
return client.getIntegerReply();
|
||||
}
|
||||
|
||||
public Set<String> zrangeByScore(String key, double min, double max) {
|
||||
client.zrangeByScore(key, min, max);
|
||||
return new LinkedHashSet<String>(client.getMultiBulkReply());
|
||||
}
|
||||
|
||||
public Set<String> zrangeByScore(String key, double min, double max,
|
||||
int offset, int count) {
|
||||
client.zrangeByScore(key, min, max, offset, count);
|
||||
return new LinkedHashSet<String>(client.getMultiBulkReply());
|
||||
}
|
||||
|
||||
public Set<Tuple> zrangeByScoreWithScores(String key, double min, double max) {
|
||||
client.zrangeByScoreWithScores(key, min, max);
|
||||
Set<Tuple> set = getTupledSet();
|
||||
return set;
|
||||
}
|
||||
|
||||
public Set<Tuple> zrangeByScoreWithScores(String key, double min,
|
||||
double max, int offset, int count) {
|
||||
client.zrangeByScoreWithScores(key, min, max, offset, count);
|
||||
Set<Tuple> set = getTupledSet();
|
||||
return set;
|
||||
}
|
||||
|
||||
private Set<Tuple> getTupledSet() {
|
||||
List<String> membersWithScores = client.getMultiBulkReply();
|
||||
Set<Tuple> set = new LinkedHashSet<Tuple>();
|
||||
Iterator<String> iterator = membersWithScores.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
set
|
||||
.add(new Tuple(iterator.next(), Double.valueOf(iterator
|
||||
.next())));
|
||||
}
|
||||
return set;
|
||||
}
|
||||
}
|
||||
@@ -192,4 +192,64 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
|
||||
|
||||
assertEquals(2, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void zrangebyscore() {
|
||||
jedis.zadd("foo", 1d, "a");
|
||||
jedis.zadd("foo", 10d, "b");
|
||||
jedis.zadd("foo", 0.1d, "c");
|
||||
jedis.zadd("foo", 2d, "a");
|
||||
|
||||
Set<String> range = jedis.zrangeByScore("foo", 0d, 2d);
|
||||
|
||||
Set<String> expected = new LinkedHashSet<String>();
|
||||
expected.add("c");
|
||||
expected.add("a");
|
||||
|
||||
assertEquals(expected, range);
|
||||
|
||||
range = jedis.zrangeByScore("foo", 0d, 2d, 0, 1);
|
||||
|
||||
expected = new LinkedHashSet<String>();
|
||||
expected.add("c");
|
||||
|
||||
assertEquals(expected, range);
|
||||
|
||||
range = jedis.zrangeByScore("foo", 0d, 2d, 1, 1);
|
||||
|
||||
expected = new LinkedHashSet<String>();
|
||||
expected.add("a");
|
||||
|
||||
assertEquals(expected, range);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void zrangebyscoreWithScores() {
|
||||
jedis.zadd("foo", 1d, "a");
|
||||
jedis.zadd("foo", 10d, "b");
|
||||
jedis.zadd("foo", 0.1d, "c");
|
||||
jedis.zadd("foo", 2d, "a");
|
||||
|
||||
Set<Tuple> range = jedis.zrangeByScoreWithScores("foo", 0d, 2d);
|
||||
|
||||
Set<Tuple> expected = new LinkedHashSet<Tuple>();
|
||||
expected.add(new Tuple("c", 0.1d));
|
||||
expected.add(new Tuple("a", 2d));
|
||||
|
||||
assertEquals(expected, range);
|
||||
|
||||
range = jedis.zrangeByScoreWithScores("foo", 0d, 2d, 0, 1);
|
||||
|
||||
expected = new LinkedHashSet<Tuple>();
|
||||
expected.add(new Tuple("c", 0.1d));
|
||||
|
||||
assertEquals(expected, range);
|
||||
|
||||
range = jedis.zrangeByScoreWithScores("foo", 0d, 2d, 1, 1);
|
||||
|
||||
expected = new LinkedHashSet<Tuple>();
|
||||
expected.add(new Tuple("a", 2d));
|
||||
|
||||
assertEquals(expected, range);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user