Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 13 additions & 4 deletions src/main/java/redis/clients/jedis/BinaryClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@
import static redis.clients.jedis.Protocol.Command.UNSUBSCRIBE;
import static redis.clients.jedis.Protocol.Keyword.*;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.Map.Entry;

import javax.net.ssl.HostnameVerifier;
Expand Down Expand Up @@ -619,6 +616,18 @@ public void zrevrangeWithScores(final byte[] key, final long start, final long s
sendCommand(ZREVRANGE, key, toByteArray(start), toByteArray(stop), WITHSCORES.getRaw());
}

public void zrandmember(final byte[] key) {
sendCommand(ZRANDMEMBER, key);
}

public void zrandmember(final byte[] key, final long count) {
sendCommand(ZRANDMEMBER, key, toByteArray(count));
}

public void zrandmemberWithScores(final byte[] key, final long count) {
sendCommand(ZRANDMEMBER, key, toByteArray(count), WITHSCORES.getRaw());
}

public void zcard(final byte[] key) {
sendCommand(ZCARD, key);
}
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/redis/clients/jedis/BinaryJedis.java
Original file line number Diff line number Diff line change
Expand Up @@ -2123,6 +2123,27 @@ public Set<Tuple> zrevrangeWithScores(final byte[] key, final long start, final
return getTupledSet();
}

@Override
public byte[] zrandmember(final byte[] key) {
checkIsInMultiOrPipeline();
client.zrandmember(key);
return client.getBinaryBulkReply();
}

@Override
public Set<byte[]> zrandmember(final byte[] key, final long count) {
checkIsInMultiOrPipeline();
client.zrandmember(key, count);
return SetFromList.of(client.getBinaryMultiBulkReply());
}

@Override
public Set<Tuple> zrandmemberWithScores(final byte[] key, final long count) {
checkIsInMultiOrPipeline();
client.zrandmemberWithScores(key, count);
return getTupledSet();
}

/**
* Return the sorted set cardinality (number of elements). If the key does not exist 0 is
* returned, like for empty sorted sets.
Expand Down Expand Up @@ -2856,6 +2877,10 @@ public Set<Tuple> zrangeByScoreWithScores(final byte[] key, final byte[] min, fi

protected Set<Tuple> getTupledSet() {
List<byte[]> membersWithScores = client.getBinaryMultiBulkReply();
// If response from Redis nil, we should return null.
if (membersWithScores == null) {
return null;
}
if (membersWithScores.isEmpty()) {
return Collections.emptySet();
}
Expand Down
30 changes: 30 additions & 0 deletions src/main/java/redis/clients/jedis/BinaryJedisCluster.java
Original file line number Diff line number Diff line change
Expand Up @@ -1068,6 +1068,36 @@ public Set<Tuple> execute(Jedis connection) {
}.runBinary(key);
}

@Override
public byte[] zrandmember(final byte[] key) {
return new JedisClusterCommand<byte[]>(connectionHandler, maxAttempts) {
@Override
public byte[] execute(Jedis connection) {
return connection.zrandmember(key);
}
}.runBinary(key);
}

@Override
public Set<byte[]> zrandmember(final byte[] key, final long count) {
return new JedisClusterCommand<Set<byte[]>>(connectionHandler, maxAttempts) {
@Override
public Set<byte[]> execute(Jedis connection) {
return connection.zrandmember(key, count);
}
}.runBinary(key);
}

@Override
public Set<Tuple> zrandmemberWithScores(final byte[] key, final long count) {
return new JedisClusterCommand<Set<Tuple>>(connectionHandler, maxAttempts) {
@Override
public Set<Tuple> execute(Jedis connection) {
return connection.zrandmemberWithScores(key, count);
}
}.runBinary(key);
}

@Override
public Long zcard(final byte[] key) {
return new JedisClusterCommand<Long>(connectionHandler, maxAttempts) {
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/redis/clients/jedis/BinaryShardedJedis.java
Original file line number Diff line number Diff line change
Expand Up @@ -613,6 +613,24 @@ public Set<Tuple> zrevrangeWithScores(final byte[] key, final long start, final
return j.zrevrangeWithScores(key, start, stop);
}

@Override
public byte[] zrandmember(final byte[] key) {
Jedis j = getShard(key);
return j.zrandmember(key);
}

@Override
public Set<byte[]> zrandmember(final byte[] key, final long count) {
Jedis j = getShard(key);
return j.zrandmember(key, count);
}

@Override
public Set<Tuple> zrandmemberWithScores(final byte[] key, final long count) {
Jedis j = getShard(key);
return j.zrandmemberWithScores(key, count);
}

@Override
public Long zcard(final byte[] key) {
Jedis j = getShard(key);
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/redis/clients/jedis/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,21 @@ public void zrevrangeWithScores(final String key, final long start, final long s
zrevrangeWithScores(SafeEncoder.encode(key), start, stop);
}

@Override
public void zrandmember(final String key) {
zrandmember(SafeEncoder.encode(key));
}

@Override
public void zrandmember(final String key, final long count) {
zrandmember(SafeEncoder.encode(key), count);
}

@Override
public void zrandmemberWithScores(final String key, final long count) {
zrandmemberWithScores(SafeEncoder.encode(key), count);
}

@Override
public void zcard(final String key) {
zcard(SafeEncoder.encode(key));
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/redis/clients/jedis/Jedis.java
Original file line number Diff line number Diff line change
Expand Up @@ -1800,6 +1800,28 @@ public Set<Tuple> zrevrangeWithScores(final String key, final long start, final
return getTupledSet();
}

@Override
public String zrandmember(final String key) {
checkIsInMultiOrPipeline();
client.zrandmember(key);
return client.getBulkReply();
}

@Override
public Set<String> zrandmember(final String key, final long count) {
checkIsInMultiOrPipeline();
client.zrandmember(key, count);
final List<String> members = client.getMultiBulkReply();
return members == null ? null : SetFromList.of(members);
}

@Override
public Set<Tuple> zrandmemberWithScores(final String key, final long count) {
checkIsInMultiOrPipeline();
client.zrandmemberWithScores(key, count);
return getTupledSet();
}

/**
* Return the sorted set cardinality (number of elements). If the key does not exist 0 is
* returned, like for empty sorted sets.
Expand Down
30 changes: 30 additions & 0 deletions src/main/java/redis/clients/jedis/JedisCluster.java
Original file line number Diff line number Diff line change
Expand Up @@ -1170,6 +1170,36 @@ public Set<Tuple> execute(Jedis connection) {
}.run(key);
}

@Override
public String zrandmember(final String key) {
return new JedisClusterCommand<String>(connectionHandler, maxAttempts) {
@Override
public String execute(Jedis connection) {
return connection.zrandmember(key);
}
}.run(key);
}

@Override
public Set<String> zrandmember(final String key, final long count) {
return new JedisClusterCommand<Set<String>>(connectionHandler, maxAttempts) {
@Override
public Set<String> execute(Jedis connection) {
return connection.zrandmember(key, count);
}
}.run(key);
}

@Override
public Set<Tuple> zrandmemberWithScores(final String key, final long count) {
return new JedisClusterCommand<Set<Tuple>>(connectionHandler, maxAttempts) {
@Override
public Set<Tuple> execute(Jedis connection) {
return connection.zrandmemberWithScores(key, count);
}
}.run(key);
}

@Override
public Long zcard(final String key) {
return new JedisClusterCommand<Long>(connectionHandler, maxAttempts) {
Expand Down
36 changes: 36 additions & 0 deletions src/main/java/redis/clients/jedis/PipelineBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -1444,6 +1444,42 @@ public Response<Set<Tuple>> zrevrangeWithScores(final byte[] key, final long sta
return getResponse(BuilderFactory.TUPLE_ZSET);
}

@Override
public Response<byte[]> zrandmember(final byte[] key) {
getClient(key).zrandmember(key);
return getResponse(BuilderFactory.BYTE_ARRAY);
}

@Override
public Response<Set<byte[]>> zrandmember(final byte[] key, final long count) {
getClient(key).zrandmember(key, count);
return getResponse(BuilderFactory.BYTE_ARRAY_ZSET);
}

@Override
public Response<Set<Tuple>> zrandmemberWithScores(final byte[] key, final long count) {
getClient(key).zrandmemberWithScores(key, count);
return getResponse(BuilderFactory.TUPLE_ZSET);
}

@Override
public Response<String> zrandmember(final String key) {
getClient(key).zrandmember(key);
return getResponse(BuilderFactory.STRING);
}

@Override
public Response<Set<String>> zrandmember(final String key, final long count) {
getClient(key).zrandmember(key, count);
return getResponse(BuilderFactory.STRING_ZSET);
}

@Override
public Response<Set<Tuple>> zrandmemberWithScores(final String key, final long count) {
getClient(key).zrandmemberWithScores(key, count);
return getResponse(BuilderFactory.TUPLE_ZSET);
}

@Override
public Response<Long> zrevrank(final String key, final String member) {
getClient(key).zrevrank(key, member);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/redis/clients/jedis/Protocol.java
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ public static enum Command implements ProtocolCommand {
HMGET, HINCRBY, HEXISTS, HDEL, HLEN, HKEYS, HVALS, HGETALL, HRANDFIELD, RPUSH, LPUSH, LLEN, LRANGE, LTRIM,
LINDEX, LSET, LREM, LPOP, RPOP, RPOPLPUSH, SADD, SMEMBERS, SREM, SPOP, SMOVE, SCARD, SISMEMBER,
SINTER, SINTERSTORE, SUNION, SUNIONSTORE, SDIFF, SDIFFSTORE, SRANDMEMBER, ZADD, ZRANGE, ZREM,
ZINCRBY, ZRANK, ZREVRANK, ZREVRANGE, ZCARD, ZSCORE, ZPOPMAX, ZPOPMIN, MULTI, DISCARD, EXEC,
ZINCRBY, ZRANK, ZREVRANK, ZREVRANGE, ZRANDMEMBER, ZCARD, ZSCORE, ZPOPMAX, ZPOPMIN, MULTI, DISCARD, EXEC,
WATCH, UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE,
PUNSUBSCRIBE, PUBSUB, ZCOUNT, ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZREMRANGEBYRANK,
ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, ZLEXCOUNT, ZRANGEBYLEX, ZREVRANGEBYLEX,
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/redis/clients/jedis/ShardedJedis.java
Original file line number Diff line number Diff line change
Expand Up @@ -640,6 +640,24 @@ public Set<Tuple> zrevrangeWithScores(final String key, final long start, final
return j.zrevrangeWithScores(key, start, stop);
}

@Override
public String zrandmember(final String key) {
Jedis j = getShard(key);
return j.zrandmember(key);
}

@Override
public Set<String> zrandmember(final String key, final long count) {
Jedis j = getShard(key);
return j.zrandmember(key, count);
}

@Override
public Set<Tuple> zrandmemberWithScores(final String key, final long count) {
Jedis j = getShard(key);
return j.zrandmemberWithScores(key, count);
}

@Override
public Long zcard(final String key) {
Jedis j = getShard(key);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,12 @@ default String setex(byte[] key, int seconds, byte[] value) {

Set<Tuple> zrevrangeWithScores(byte[] key, long start, long stop);

byte[] zrandmember(byte[] key);

Set<byte[]> zrandmember(byte[] key, long count);

Set<Tuple> zrandmemberWithScores(byte[] key, long count);

Long zcard(byte[] key);

Double zscore(byte[] key, byte[] member);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,12 @@ default String setex(byte[] key, int seconds, byte[] value) {

Set<Tuple> zrevrangeWithScores(byte[] key, long start, long stop);

byte[] zrandmember(byte[] key);

Set<byte[]> zrandmember(byte[] key, long count);

Set<Tuple> zrandmemberWithScores(byte[] key, long count);

Long zcard(byte[] key);

Double zscore(byte[] key, byte[] member);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,12 @@ default Response<String> setex(byte[] key, int seconds, byte[] value) {

Response<Set<Tuple>> zrevrangeWithScores(byte[] key, long start, long stop);

Response<byte[]> zrandmember(byte[] key);

Response<Set<byte[]>> zrandmember(byte[] key, long count);

Response<Set<Tuple>> zrandmemberWithScores(byte[] key, long count);

Response<Long> zrevrank(byte[] key, byte[] member);

Response<Double> zscore(byte[] key, byte[] member);
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/redis/clients/jedis/commands/Commands.java
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,12 @@ default void setex(String key, int seconds, String value) {

void zrevrangeWithScores(String key, long start, long stop);

void zrandmember(String key);

void zrandmember(String key, long count);

void zrandmemberWithScores(String key, long count);

void zcard(String key);

void zscore(String key, String member);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,12 @@ default String setex(String key, int seconds, String value) {

Set<Tuple> zrevrangeWithScores(String key, long start, long stop);

String zrandmember(String key);

Set<String> zrandmember(String key, long count);

Set<Tuple> zrandmemberWithScores(String key, long count);

Long zcard(String key);

Double zscore(String key, String member);
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/redis/clients/jedis/commands/JedisCommands.java
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,12 @@ default String setex(String key, int seconds, String value) {

Set<Tuple> zrevrangeWithScores(String key, long start, long stop);

String zrandmember(String key);

Set<String> zrandmember(String key, long count);

Set<Tuple> zrandmemberWithScores(String key, long count);

Long zcard(String key);

Double zscore(String key, String member);
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/redis/clients/jedis/commands/RedisPipeline.java
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,12 @@ default Response<String> setex(String key, int seconds, String value) {

Response<Set<Tuple>> zrangeWithScores(String key, long start, long stop);

Response<String> zrandmember(String key);

Response<Set<String>> zrandmember(String key, long count);

Response<Set<Tuple>> zrandmemberWithScores(String key, long count);

Response<Long> zrank(String key, String member);

Response<Long> zrem(String key, String... members);
Expand Down
Loading