Implemented ZUNIONSTORE and ZINTERSTORE
This commit is contained in:
@@ -473,4 +473,42 @@ public class Client extends Connection {
|
||||
sendCommand("ZREMRANGEBYSCORE", key, String.valueOf(start), String
|
||||
.valueOf(end));
|
||||
}
|
||||
}
|
||||
|
||||
public void zunionstore(String dstkey, String... sets) {
|
||||
String[] params = new String[sets.length + 2];
|
||||
params[0] = dstkey;
|
||||
params[1] = String.valueOf(sets.length);
|
||||
System.arraycopy(sets, 0, params, 2, sets.length);
|
||||
sendCommand("ZUNIONSTORE", params);
|
||||
}
|
||||
|
||||
public void zunionstore(String dstkey, ZParams params, String... sets) {
|
||||
List<String> args = new ArrayList<String>();
|
||||
args.add(dstkey);
|
||||
args.add(String.valueOf(sets.length));
|
||||
for (String set : sets) {
|
||||
args.add(set);
|
||||
}
|
||||
args.addAll(params.getParams());
|
||||
sendCommand("ZUNIONSTORE", args.toArray(new String[args.size()]));
|
||||
}
|
||||
|
||||
public void zinterstore(String dstkey, String... sets) {
|
||||
String[] params = new String[sets.length + 2];
|
||||
params[0] = dstkey;
|
||||
params[1] = String.valueOf(sets.length);
|
||||
System.arraycopy(sets, 0, params, 2, sets.length);
|
||||
sendCommand("ZINTERSTORE", params);
|
||||
}
|
||||
|
||||
public void zinterstore(String dstkey, ZParams params, String... sets) {
|
||||
List<String> args = new ArrayList<String>();
|
||||
args.add(dstkey);
|
||||
args.add(String.valueOf(sets.length));
|
||||
for (String set : sets) {
|
||||
args.add(set);
|
||||
}
|
||||
args.addAll(params.getParams());
|
||||
sendCommand("ZINTERSTORE", args.toArray(new String[args.size()]));
|
||||
}
|
||||
}
|
||||
@@ -582,4 +582,24 @@ public class Jedis {
|
||||
client.zremrangeByScore(key, start, end);
|
||||
return client.getIntegerReply();
|
||||
}
|
||||
|
||||
public int zunionstore(String dstkey, String... sets) {
|
||||
client.zunionstore(dstkey, sets);
|
||||
return client.getIntegerReply();
|
||||
}
|
||||
|
||||
public int zunionstore(String dstkey, ZParams params, String... sets) {
|
||||
client.zunionstore(dstkey, params, sets);
|
||||
return client.getIntegerReply();
|
||||
}
|
||||
|
||||
public int zinterstore(String dstkey, String... sets) {
|
||||
client.zinterstore(dstkey, sets);
|
||||
return client.getIntegerReply();
|
||||
}
|
||||
|
||||
public int zinterstore(String dstkey, ZParams params, String... sets) {
|
||||
client.zinterstore(dstkey, params, sets);
|
||||
return client.getIntegerReply();
|
||||
}
|
||||
}
|
||||
33
src/main/java/redis/clients/jedis/ZParams.java
Normal file
33
src/main/java/redis/clients/jedis/ZParams.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package redis.clients.jedis;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class ZParams {
|
||||
public enum Aggregate {
|
||||
SUM, MIN, MAX
|
||||
}
|
||||
|
||||
private List<String> params = new ArrayList<String>();
|
||||
|
||||
public ZParams weights(int... weights) {
|
||||
params.add("WEIGHTS");
|
||||
for (int weight : weights) {
|
||||
params.add(String.valueOf(weight));
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public Collection<String> getParams() {
|
||||
return Collections.unmodifiableCollection(params);
|
||||
}
|
||||
|
||||
public ZParams aggregate(Aggregate aggregate) {
|
||||
params.add("AGGREGATE");
|
||||
params.add(aggregate.name());
|
||||
return this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user