Merge pull request #627 from aloksingh/hll-pfcount-with-multiple-keys
Add support for pfcount with multiple keys
This commit is contained in:
@@ -1,26 +1,22 @@
|
||||
package redis.clients.jedis;
|
||||
|
||||
import static redis.clients.jedis.Protocol.toByteArray;
|
||||
import static redis.clients.jedis.Protocol.Command.*;
|
||||
import static redis.clients.jedis.Protocol.Keyword.ENCODING;
|
||||
import static redis.clients.jedis.Protocol.Keyword.IDLETIME;
|
||||
import static redis.clients.jedis.Protocol.Keyword.LEN;
|
||||
import static redis.clients.jedis.Protocol.Keyword.LIMIT;
|
||||
import static redis.clients.jedis.Protocol.Keyword.NO;
|
||||
import static redis.clients.jedis.Protocol.Keyword.ONE;
|
||||
import static redis.clients.jedis.Protocol.Keyword.REFCOUNT;
|
||||
import static redis.clients.jedis.Protocol.Keyword.RESET;
|
||||
import static redis.clients.jedis.Protocol.Keyword.STORE;
|
||||
import static redis.clients.jedis.Protocol.Keyword.WITHSCORES;
|
||||
import redis.clients.jedis.Protocol.Command;
|
||||
import redis.clients.jedis.Protocol.Keyword;
|
||||
import redis.clients.util.SafeEncoder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import redis.clients.jedis.Protocol.Command;
|
||||
import redis.clients.jedis.Protocol.Keyword;
|
||||
import redis.clients.util.SafeEncoder;
|
||||
import static redis.clients.jedis.Protocol.Command.*;
|
||||
import static redis.clients.jedis.Protocol.Command.EXISTS;
|
||||
import static redis.clients.jedis.Protocol.Command.PSUBSCRIBE;
|
||||
import static redis.clients.jedis.Protocol.Command.PUNSUBSCRIBE;
|
||||
import static redis.clients.jedis.Protocol.Command.SUBSCRIBE;
|
||||
import static redis.clients.jedis.Protocol.Command.UNSUBSCRIBE;
|
||||
import static redis.clients.jedis.Protocol.Keyword.*;
|
||||
import static redis.clients.jedis.Protocol.toByteArray;
|
||||
|
||||
public class BinaryClient extends Connection {
|
||||
public enum LIST_POSITION {
|
||||
@@ -1262,6 +1258,10 @@ public class BinaryClient extends Connection {
|
||||
sendCommand(PFCOUNT, key);
|
||||
}
|
||||
|
||||
public void pfcount(final byte[]...keys) {
|
||||
sendCommand(PFCOUNT, keys);
|
||||
}
|
||||
|
||||
public void pfmerge(final byte[] destkey, final byte[]... sourcekeys) {
|
||||
sendCommand(PFMERGE, joinParameters(destkey, sourcekeys));
|
||||
}
|
||||
|
||||
@@ -3438,4 +3438,11 @@ public class BinaryJedis implements BasicCommands, BinaryJedisCommands,
|
||||
return client.getStatusCodeReply();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long pfcount(byte[]... keys) {
|
||||
checkIsInMulti();
|
||||
client.pfcount(keys);
|
||||
return client.getIntegerReply();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package redis.clients.jedis;
|
||||
|
||||
import static redis.clients.jedis.Protocol.toByteArray;
|
||||
import redis.clients.util.SafeEncoder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@@ -8,7 +8,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import redis.clients.util.SafeEncoder;
|
||||
import static redis.clients.jedis.Protocol.toByteArray;
|
||||
|
||||
public class Client extends BinaryClient implements Commands {
|
||||
public Client(final String host) {
|
||||
@@ -960,6 +960,10 @@ public class Client extends BinaryClient implements Commands {
|
||||
pfcount(SafeEncoder.encode(key));
|
||||
}
|
||||
|
||||
public void pfcount(final String...keys) {
|
||||
pfcount(SafeEncoder.encodeMany(keys));
|
||||
}
|
||||
|
||||
public void pfmerge(final String destkey, final String... sourcekeys) {
|
||||
pfmerge(SafeEncoder.encode(destkey), SafeEncoder.encodeMany(sourcekeys));
|
||||
}
|
||||
|
||||
@@ -1,20 +1,13 @@
|
||||
package redis.clients.jedis;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import redis.clients.jedis.BinaryClient.LIST_POSITION;
|
||||
import redis.clients.util.SafeEncoder;
|
||||
import redis.clients.util.Slowlog;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public class Jedis extends BinaryJedis implements JedisCommands,
|
||||
MultiKeyCommands, AdvancedJedisCommands, ScriptingCommands,
|
||||
BasicCommands, ClusterCommands {
|
||||
@@ -3425,6 +3418,13 @@ public class Jedis extends BinaryJedis implements JedisCommands,
|
||||
return client.getIntegerReply();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long pfcount(String... keys) {
|
||||
checkIsInMulti();
|
||||
client.pfcount(keys);
|
||||
return client.getIntegerReply();
|
||||
}
|
||||
|
||||
public String pfmerge(final String destkey, final String... sourcekeys) {
|
||||
checkIsInMulti();
|
||||
client.pfmerge(destkey, sourcekeys);
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package redis.clients.jedis;
|
||||
|
||||
import redis.clients.jedis.BinaryClient.LIST_POSITION;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import redis.clients.jedis.BinaryClient.LIST_POSITION;
|
||||
|
||||
public class JedisCluster implements JedisCommands, BasicCommands {
|
||||
public static final short HASHSLOTS = 16384;
|
||||
private static final int DEFAULT_TIMEOUT = 1;
|
||||
@@ -1503,5 +1503,4 @@ public class JedisCluster implements JedisCommands, BasicCommands {
|
||||
}
|
||||
}.run(key);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -244,4 +244,5 @@ public interface JedisCommands {
|
||||
Long pfadd(final String key, final String... elements);
|
||||
|
||||
long pfcount(final String key);
|
||||
|
||||
}
|
||||
|
||||
@@ -71,4 +71,6 @@ public interface MultiKeyBinaryCommands {
|
||||
Long bitop(BitOP op, final byte[] destKey, byte[]... srcKeys);
|
||||
|
||||
String pfmerge(final byte[] destkey, final byte[]... sourcekeys);
|
||||
|
||||
Long pfcount(byte[]... keys);
|
||||
}
|
||||
|
||||
@@ -81,4 +81,6 @@ public interface MultiKeyCommands {
|
||||
ScanResult<String> scan(final String cursor);
|
||||
|
||||
String pfmerge(final String destkey, final String... sourcekeys);
|
||||
|
||||
long pfcount(final String...keys);
|
||||
}
|
||||
|
||||
@@ -66,4 +66,6 @@ public interface MultiKeyCommandsPipeline {
|
||||
Response<Long> bitop(BitOP op, final String destKey, String... srcKeys);
|
||||
|
||||
Response<String> pfmerge(final String destkey, final String... sourcekeys);
|
||||
|
||||
Response<Long> pfcount(final String...keys);
|
||||
}
|
||||
|
||||
@@ -458,4 +458,10 @@ abstract class MultiKeyPipelineBase extends PipelineBase implements
|
||||
client.pfmerge(destkey, sourcekeys);
|
||||
return getResponse(BuilderFactory.STRING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Response<Long> pfcount(String...keys) {
|
||||
client.pfcount(keys);
|
||||
return getResponse(BuilderFactory.LONG);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package redis.clients.jedis;
|
||||
|
||||
import redis.clients.jedis.BinaryClient.LIST_POSITION;
|
||||
import redis.clients.util.Hashing;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import redis.clients.jedis.BinaryClient.LIST_POSITION;
|
||||
import redis.clients.util.Hashing;
|
||||
|
||||
public class ShardedJedis extends BinaryShardedJedis implements JedisCommands {
|
||||
public ShardedJedis(List<JedisShardInfo> shards) {
|
||||
super(shards);
|
||||
|
||||
@@ -43,6 +43,31 @@ public class HyperLogLogCommandsTest extends JedisCommandTestBase {
|
||||
assertEquals(3, status);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pfcounts() {
|
||||
long status = jedis.pfadd("hll_1", "foo", "bar", "zap");
|
||||
assertEquals(1, status);
|
||||
status = jedis.pfadd("hll_2", "foo", "bar", "zap");
|
||||
assertEquals(1, status);
|
||||
|
||||
status = jedis.pfadd("hll_3", "foo", "bar", "baz");
|
||||
assertEquals(1, status);
|
||||
status = jedis.pfcount("hll_1");
|
||||
assertEquals(3, status);
|
||||
status = jedis.pfcount("hll_2");
|
||||
assertEquals(3, status);
|
||||
status = jedis.pfcount("hll_3");
|
||||
assertEquals(3, status);
|
||||
|
||||
status = jedis.pfcount("hll_1", "hll_2");
|
||||
assertEquals(3, status);
|
||||
|
||||
status = jedis.pfcount("hll_1", "hll_2", "hll_3");
|
||||
assertEquals(4, status);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pfcountBinary() {
|
||||
byte[] bHll = SafeEncoder.encode("hll");
|
||||
|
||||
Reference in New Issue
Block a user