diff --git a/src/main/java/redis/clients/jedis/BinaryClient.java b/src/main/java/redis/clients/jedis/BinaryClient.java index 6c77f501ff..7e511d543a 100644 --- a/src/main/java/redis/clients/jedis/BinaryClient.java +++ b/src/main/java/redis/clients/jedis/BinaryClient.java @@ -566,6 +566,10 @@ public void zadd(final byte[] key, final Map scoreMembers, final sendCommand(ZADD, params.getByteParams(key, argsArray)); } + public void zaddIncr(final byte[] key, final double score, final byte[] member, final ZAddParams params) { + sendCommand(ZADD, params.getByteParams(key, INCR.getRaw(), toByteArray(score), member)); + } + public void zrange(final byte[] key, final long start, final long stop) { sendCommand(ZRANGE, key, toByteArray(start), toByteArray(stop)); } diff --git a/src/main/java/redis/clients/jedis/BinaryJedis.java b/src/main/java/redis/clients/jedis/BinaryJedis.java index 6de336ff72..7367c3ff00 100644 --- a/src/main/java/redis/clients/jedis/BinaryJedis.java +++ b/src/main/java/redis/clients/jedis/BinaryJedis.java @@ -1840,14 +1840,14 @@ public Long sunionstore(final byte[] dstkey, final byte[]... keys) { * Return the difference between the Set stored at key1 and all the Sets key2, ..., keyN *

* Example: - * + * *

    * key1 = [x, a, b, c]
    * key2 = [c]
    * key3 = [a, d]
    * SDIFF key1,key2,key3 => [x, b]
    * 
- * + * * Non existing keys are considered like empty sets. *

* Time complexity: @@ -1947,6 +1947,13 @@ public Long zadd(final byte[] key, final Map scoreMembers, final return client.getIntegerReply(); } + @Override + public Double zaddIncr(final byte[] key, final double score, final byte[] member, final ZAddParams params) { + checkIsInMultiOrPipeline(); + client.zaddIncr(key, score, member, params); + return BuilderFactory.DOUBLE.build(client.getOne()); + } + @Override public Set zrange(final byte[] key, final long start, final long stop) { checkIsInMultiOrPipeline(); @@ -2205,65 +2212,65 @@ public List sort(final byte[] key) { * examples: *

* Given are the following sets and key/values: - * + * *

    * x = [1, 2, 3]
    * y = [a, b, c]
-   * 
+   *
    * k1 = z
    * k2 = y
    * k3 = x
-   * 
+   *
    * w1 = 9
    * w2 = 8
    * w3 = 7
    * 
- * + * * Sort Order: - * + * *
    * sort(x) or sort(x, sp.asc())
    * -> [1, 2, 3]
-   * 
+   *
    * sort(x, sp.desc())
    * -> [3, 2, 1]
-   * 
+   *
    * sort(y)
    * -> [c, a, b]
-   * 
+   *
    * sort(y, sp.alpha())
    * -> [a, b, c]
-   * 
+   *
    * sort(y, sp.alpha().desc())
    * -> [c, a, b]
    * 
- * + * * Limit (e.g. for Pagination): - * + * *
    * sort(x, sp.limit(0, 2))
    * -> [1, 2]
-   * 
+   *
    * sort(y, sp.alpha().desc().limit(1, 2))
    * -> [b, a]
    * 
- * + * * Sorting by external keys: - * + * *
    * sort(x, sb.by(w*))
    * -> [3, 2, 1]
-   * 
+   *
    * sort(x, sb.by(w*).desc())
    * -> [1, 2, 3]
    * 
- * + * * Getting external keys: - * + * *
    * sort(x, sp.by(w*).get(k*))
    * -> [x, y, z]
-   * 
+   *
    * sort(x, sp.by(w*).get(#).get(k*))
    * -> [3, x, 2, y, 1, z]
    * 
@@ -3198,7 +3205,7 @@ public String shutdown() { * Format of the returned String: *

* All the fields are in the form field:value - * + * *

    * edis_version:0.07
    * connected_clients:1
@@ -3211,7 +3218,7 @@ public String shutdown() {
    * uptime_in_seconds:25
    * uptime_in_days:0
    * 
- * + * * Notes *

* used_memory is returned in bytes, and is the total number of bytes allocated by the program @@ -3293,7 +3300,7 @@ public String slaveofNoOne() { * are reported as a list of key-value pairs. *

* Example: - * + * *

    * $ redis-cli config get '*'
    * 1. "dbfilename"
@@ -3308,7 +3315,7 @@ public String slaveofNoOne() {
    * 10. "everysec"
    * 11. "save"
    * 12. "3600 1 300 100 60 10000"
-   * 
+   *
    * $ redis-cli config get 'm*'
    * 1. "masterauth"
    * 2. (nil)
diff --git a/src/main/java/redis/clients/jedis/BinaryJedisCluster.java b/src/main/java/redis/clients/jedis/BinaryJedisCluster.java
index a758cc7d9d..d8174e40f4 100644
--- a/src/main/java/redis/clients/jedis/BinaryJedisCluster.java
+++ b/src/main/java/redis/clients/jedis/BinaryJedisCluster.java
@@ -931,6 +931,16 @@ public Long execute(Jedis connection) {
     }.runBinary(key);
   }
 
+  @Override
+  public Double zaddIncr(byte[] key, double score, byte[] member, ZAddParams params) {
+    return new JedisClusterCommand(connectionHandler, maxAttempts) {
+      @Override
+      public Double execute(Jedis connection) {
+        return connection.zaddIncr(key, score, member, params);
+      }
+    }.runBinary(key);
+  }
+
   @Override
   public Set zrange(final byte[] key, final long start, final long stop) {
     return new JedisClusterCommand>(connectionHandler, maxAttempts) {
diff --git a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java
index 20967b6c3e..bb8849acdd 100644
--- a/src/main/java/redis/clients/jedis/BinaryShardedJedis.java
+++ b/src/main/java/redis/clients/jedis/BinaryShardedJedis.java
@@ -525,6 +525,12 @@ public Long zadd(final byte[] key, final Map scoreMembers, final
     return j.zadd(key, scoreMembers, params);
   }
 
+  @Override
+  public Double zaddIncr(final byte[] key, final double score, final byte[] member, final ZAddParams params) {
+    Jedis j = getShard(key);
+    return j.zaddIncr(key, score, member, params);
+  }
+
   @Override
   public Set zrange(final byte[] key, final long start, final long stop) {
     Jedis j = getShard(key);
diff --git a/src/main/java/redis/clients/jedis/Client.java b/src/main/java/redis/clients/jedis/Client.java
index 4189ce9b86..b15295f3bf 100644
--- a/src/main/java/redis/clients/jedis/Client.java
+++ b/src/main/java/redis/clients/jedis/Client.java
@@ -470,6 +470,11 @@ public void zadd(final String key, final Map scoreMembers, final
     zadd(SafeEncoder.encode(key), binaryScoreMembers, params);
   }
 
+  @Override
+  public void zaddIncr(final String key, final double score, final String member, final ZAddParams params) {
+    zaddIncr(SafeEncoder.encode(key), score, SafeEncoder.encode(member), params);
+  }
+
   @Override
   public void zrange(final String key, final long start, final long stop) {
     zrange(SafeEncoder.encode(key), start, stop);
@@ -1399,14 +1404,14 @@ public void xreadGroup(String groupname, String consumer, int count, long block,
     for (final Entry entry : streams) {
       bhash.put(SafeEncoder.encode(entry.getKey()), SafeEncoder.encode(entry.getValue()==null ? ">" : entry.getValue().toString()));
     }
-    xreadGroup(SafeEncoder.encode(groupname), SafeEncoder.encode(consumer), count, block, noAck, bhash);    
+    xreadGroup(SafeEncoder.encode(groupname), SafeEncoder.encode(consumer), count, block, noAck, bhash);
   }
 
   @Override
   public void xpending(String key, String groupname, StreamEntryID start, StreamEntryID end,
       int count, String consumername) {
     xpending(SafeEncoder.encode(key), SafeEncoder.encode(groupname), SafeEncoder.encode(start==null ? "-" : start.toString()),
-        SafeEncoder.encode(end==null ? "+" : end.toString()), count, consumername == null? null : SafeEncoder.encode(consumername));    
+        SafeEncoder.encode(end==null ? "+" : end.toString()), count, consumername == null? null : SafeEncoder.encode(consumername));
   }
 
   @Override
@@ -1417,7 +1422,7 @@ public void xclaim(String key, String group, String consumername, long minIdleTi
     for (int i = 0; i < ids.length; i++) {
       bids[i] = SafeEncoder.encode(ids[i].toString());
     }
-    xclaim(SafeEncoder.encode(key), SafeEncoder.encode(group), SafeEncoder.encode(consumername), minIdleTime, newIdleTime, retries, force, bids);    
+    xclaim(SafeEncoder.encode(key), SafeEncoder.encode(group), SafeEncoder.encode(consumername), minIdleTime, newIdleTime, retries, force, bids);
   }
 
   @Override
diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java
index edf0c7b591..76e93fcdbc 100644
--- a/src/main/java/redis/clients/jedis/Jedis.java
+++ b/src/main/java/redis/clients/jedis/Jedis.java
@@ -1523,14 +1523,14 @@ public Long sunionstore(final String dstkey, final String... keys) {
    * Return the difference between the Set stored at key1 and all the Sets key2, ..., keyN
    * 

* Example: - * + * *

    * key1 = [x, a, b, c]
    * key2 = [c]
    * key3 = [a, d]
    * SDIFF key1,key2,key3 => [x, b]
    * 
- * + * * Non existing keys are considered like empty sets. *

* Time complexity: @@ -1630,6 +1630,13 @@ public Long zadd(final String key, final Map scoreMembers, final return client.getIntegerReply(); } + @Override + public Double zaddIncr(final String key, final double score, final String member, final ZAddParams params) { + checkIsInMultiOrPipeline(); + client.zaddIncr(key, score, member, params); + return BuilderFactory.DOUBLE.build(client.getOne()); + } + @Override public Set zrange(final String key, final long start, final long stop) { checkIsInMultiOrPipeline(); @@ -1866,65 +1873,65 @@ public List sort(final String key) { * examples: *

* Given are the following sets and key/values: - * + * *

    * x = [1, 2, 3]
    * y = [a, b, c]
-   * 
+   *
    * k1 = z
    * k2 = y
    * k3 = x
-   * 
+   *
    * w1 = 9
    * w2 = 8
    * w3 = 7
    * 
- * + * * Sort Order: - * + * *
    * sort(x) or sort(x, sp.asc())
    * -> [1, 2, 3]
-   * 
+   *
    * sort(x, sp.desc())
    * -> [3, 2, 1]
-   * 
+   *
    * sort(y)
    * -> [c, a, b]
-   * 
+   *
    * sort(y, sp.alpha())
    * -> [a, b, c]
-   * 
+   *
    * sort(y, sp.alpha().desc())
    * -> [c, a, b]
    * 
- * + * * Limit (e.g. for Pagination): - * + * *
    * sort(x, sp.limit(0, 2))
    * -> [1, 2]
-   * 
+   *
    * sort(y, sp.alpha().desc().limit(1, 2))
    * -> [b, a]
    * 
- * + * * Sorting by external keys: - * + * *
    * sort(x, sb.by(w*))
    * -> [3, 2, 1]
-   * 
+   *
    * sort(x, sb.by(w*).desc())
    * -> [1, 2, 3]
    * 
- * + * * Getting external keys: - * + * *
    * sort(x, sp.by(w*).get(k*))
    * -> [x, y, z]
-   * 
+   *
    * sort(x, sp.by(w*).get(#).get(k*))
    * -> [3, x, 2, y, 1, z]
    * 
@@ -2866,7 +2873,7 @@ public Long bitpos(final String key, final boolean value, final BitPosParams par * are reported as a list of key-value pairs. *

* Example: - * + * *

    * $ redis-cli config get '*'
    * 1. "dbfilename"
@@ -2881,7 +2888,7 @@ public Long bitpos(final String key, final boolean value, final BitPosParams par
    * 10. "everysec"
    * 11. "save"
    * 12. "3600 1 300 100 60 10000"
-   * 
+   *
    * $ redis-cli config get 'm*'
    * 1. "masterauth"
    * 2. (nil)
@@ -3131,7 +3138,7 @@ public Long bitop(final BitOP op, final String destKey, final String... srcKeys)
    *    22) "2"
    *    23) "quorum"
    *    24) "2"
-   * 
+   *
    * 
* @return */ diff --git a/src/main/java/redis/clients/jedis/JedisCluster.java b/src/main/java/redis/clients/jedis/JedisCluster.java index a72accb042..feb5d75f16 100644 --- a/src/main/java/redis/clients/jedis/JedisCluster.java +++ b/src/main/java/redis/clients/jedis/JedisCluster.java @@ -1034,6 +1034,16 @@ public Long execute(Jedis connection) { }.run(key); } + @Override + public Double zaddIncr(String key, double score, String member, ZAddParams params) { + return new JedisClusterCommand(connectionHandler, maxAttempts) { + @Override + public Double execute(Jedis connection) { + return connection.zaddIncr(key, score, member, params); + } + }.run(key); + } + @Override public Set zrange(final String key, final long start, final long stop) { return new JedisClusterCommand>(connectionHandler, maxAttempts) { diff --git a/src/main/java/redis/clients/jedis/Protocol.java b/src/main/java/redis/clients/jedis/Protocol.java index 72468d0eaf..ecdd2394f2 100644 --- a/src/main/java/redis/clients/jedis/Protocol.java +++ b/src/main/java/redis/clients/jedis/Protocol.java @@ -282,7 +282,7 @@ public static enum Keyword { GETNAME, SETNAME, LIST, MATCH, COUNT, PING, PONG, UNLOAD, REPLACE, KEYS, PAUSE, DOCTOR, BLOCK, NOACK, STREAMS, KEY, CREATE, MKSTREAM, SETID, DESTROY, DELCONSUMER, MAXLEN, GROUP, ID, IDLE, TIME, RETRYCOUNT, FORCE, USAGE, SAMPLES, STREAM, GROUPS, CONSUMERS, HELP, FREQ, SETUSER, - GETUSER, DELUSER, WHOAMI, CAT, GENPASS, USERS, LOG; + GETUSER, DELUSER, WHOAMI, CAT, GENPASS, USERS, LOG, INCR; /** * @deprecated This will be private in future. Use {@link #getRaw()}. diff --git a/src/main/java/redis/clients/jedis/ShardedJedis.java b/src/main/java/redis/clients/jedis/ShardedJedis.java index b8c81240f7..54c948b6cc 100644 --- a/src/main/java/redis/clients/jedis/ShardedJedis.java +++ b/src/main/java/redis/clients/jedis/ShardedJedis.java @@ -552,6 +552,12 @@ public Long zadd(final String key, final Map scoreMembers, final return j.zadd(key, scoreMembers, params); } + @Override + public Double zaddIncr(final String key, final double score, final String member, final ZAddParams params) { + Jedis j = getShard(key); + return j.zaddIncr(key, score, member, params); + } + @Override public Set zrange(final String key, final long start, final long stop) { Jedis j = getShard(key); diff --git a/src/main/java/redis/clients/jedis/commands/BinaryJedisClusterCommands.java b/src/main/java/redis/clients/jedis/commands/BinaryJedisClusterCommands.java index c0eb46a568..4d6d2aeb69 100644 --- a/src/main/java/redis/clients/jedis/commands/BinaryJedisClusterCommands.java +++ b/src/main/java/redis/clients/jedis/commands/BinaryJedisClusterCommands.java @@ -187,6 +187,8 @@ default String setex(byte[] key, int seconds, byte[] value) { Long zadd(byte[] key, Map scoreMembers, ZAddParams params); + Double zaddIncr(byte[] key, double score, byte[] member, ZAddParams params); + Set zrange(byte[] key, long start, long stop); Long zrem(byte[] key, byte[]... members); @@ -348,20 +350,20 @@ List georadiusByMemberReadonly(byte[] key, byte[] member, dou * Executes BITFIELD Redis command * @param key * @param arguments - * @return + * @return */ List bitfield(byte[] key, byte[]... arguments); List bitfieldReadonly(byte[] key, byte[]... arguments); - + /** * Used for HSTRLEN Redis command - * @param key + * @param key * @param field - * @return + * @return */ Long hstrlen(byte[] key, byte[] field); - + byte[] xadd(byte[] key, byte[] id, Map hash, long maxLen, boolean approximateLength); Long xlen(byte[] key); @@ -377,7 +379,7 @@ List georadiusByMemberReadonly(byte[] key, byte[] member, dou List xrevrange(byte[] key, byte[] end, byte[] start, int count); Long xack(byte[] key, byte[] group, byte[]... ids); - + String xgroupCreate(byte[] key, byte[] consumer, byte[] id, boolean makeStream); String xgroupSetID(byte[] key, byte[] consumer, byte[] id); @@ -385,7 +387,7 @@ List georadiusByMemberReadonly(byte[] key, byte[] member, dou Long xgroupDestroy(byte[] key, byte[] consumer); Long xgroupDelConsumer(byte[] key, byte[] consumer, byte[] consumerName); - + Long xdel(byte[] key, byte[]... ids); Long xtrim(byte[] key, long maxLen, boolean approximateLength); @@ -395,8 +397,8 @@ List georadiusByMemberReadonly(byte[] key, byte[] member, dou List xclaim(byte[] key, byte[] groupname, byte[] consumername, long minIdleTime, long newIdleTime, int retries, boolean force, byte[][] ids); Long waitReplicas(byte[] key, int replicas, long timeout); - + Long memoryUsage(byte[] key); - + Long memoryUsage(byte[] key, int samples); } diff --git a/src/main/java/redis/clients/jedis/commands/BinaryJedisCommands.java b/src/main/java/redis/clients/jedis/commands/BinaryJedisCommands.java index 8fe200cc05..bf1683aeed 100644 --- a/src/main/java/redis/clients/jedis/commands/BinaryJedisCommands.java +++ b/src/main/java/redis/clients/jedis/commands/BinaryJedisCommands.java @@ -30,7 +30,7 @@ public interface BinaryJedisCommands { String set(byte[] key, byte[] value, SetParams params); byte[] get(byte[] key); - + byte[] getDel(byte[] key); Boolean exists(byte[] key); @@ -211,6 +211,8 @@ default String setex(byte[] key, int seconds, byte[] value) { Long zadd(byte[] key, Map scoreMembers, ZAddParams params); + Double zaddIncr(byte[] key, double score, byte[] member, ZAddParams params); + Set zrange(byte[] key, long start, long stop); Long zrem(byte[] key, byte[]... members); @@ -375,15 +377,15 @@ List georadiusByMemberReadonly(byte[] key, byte[] member, dou * Executes BITFIELD Redis command * @param key * @param arguments - * @return + * @return */ List bitfield(byte[] key, byte[]... arguments); List bitfieldReadonly(byte[] key, byte[]... arguments); - + /** * Used for HSTRLEN Redis command - * @param key + * @param key * @param field * @return lenth of the value for key */ diff --git a/src/main/java/redis/clients/jedis/commands/Commands.java b/src/main/java/redis/clients/jedis/commands/Commands.java index 19b3338d92..0a09b2ef5c 100644 --- a/src/main/java/redis/clients/jedis/commands/Commands.java +++ b/src/main/java/redis/clients/jedis/commands/Commands.java @@ -19,13 +19,13 @@ public interface Commands { void ping(String message); - + void set(String key, String value); void set(String key, String value, SetParams params); void get(String key); - + void getDel(String key); void exists(String... keys); @@ -206,6 +206,8 @@ default void setex(String key, int seconds, String value) { void zadd(String key, Map scoreMembers, ZAddParams params); + void zaddIncr(String key, double score, String member, ZAddParams params); + void zrange(String key, long start, long stop); void zrem(String key, String... members); @@ -229,9 +231,9 @@ default void setex(String key, int seconds, String value) { void zscore(String key, String member); void zmscore(String key, String... members); - + void zpopmax(String key); - + void zpopmax(String key, int count); void zpopmin(String key); @@ -421,17 +423,17 @@ default void restoreReplace(String key, int ttl, byte[] serializedValue) { void memoryDoctor(); void xadd(String key, StreamEntryID id, Map hash, long maxLen, boolean approximateLength); - + void xlen(String key); void xrange(String key, StreamEntryID start, StreamEntryID end, long count); - + void xrevrange(String key, StreamEntryID end, StreamEntryID start, int count); - + void xread(int count, long block, Entry... streams); - + void xack(String key, String group, StreamEntryID... ids); - + void xgroupCreate(String key, String consumer, StreamEntryID id, boolean makeStream); void xgroupSetID(String key, String consumer, StreamEntryID id); diff --git a/src/main/java/redis/clients/jedis/commands/JedisClusterCommands.java b/src/main/java/redis/clients/jedis/commands/JedisClusterCommands.java index c9fe5ef32a..9bc758538d 100644 --- a/src/main/java/redis/clients/jedis/commands/JedisClusterCommands.java +++ b/src/main/java/redis/clients/jedis/commands/JedisClusterCommands.java @@ -26,7 +26,7 @@ public interface JedisClusterCommands { String set(String key, String value, SetParams params); String get(String key); - + String getDel(String key); Boolean exists(String key); @@ -197,6 +197,8 @@ default String setex(String key, int seconds, String value) { Long zadd(String key, Map scoreMembers, ZAddParams params); + Double zaddIncr(String key, double score, String member, ZAddParams params); + Set zrange(String key, long start, long stop); Long zrem(String key, String... members); @@ -357,15 +359,15 @@ List georadiusByMemberReadonly(String key, String member, dou * Executes BITFIELD Redis command * @param key * @param arguments - * @return + * @return */ List bitfield(String key, String...arguments); List bitfieldReadonly(String key, String...arguments); - + /** * Used for HSTRLEN Redis command - * @param key + * @param key * @param field * @return lenth of the value for key */ @@ -373,25 +375,25 @@ List georadiusByMemberReadonly(String key, String member, dou /** * MEMORY USAGE key - * + * * @param key * @return the memory usage */ Long memoryUsage(String key); /** - * MEMORY USAGE key [SAMPLES count] - * + * MEMORY USAGE key [SAMPLES count] + * * @param key * @param samples * @return the memory usage */ Long memoryUsage(String key, int samples); - + /** * XADD key ID field string [field string ...] - * + * * @param key * @param id * @param hash @@ -401,7 +403,7 @@ List georadiusByMemberReadonly(String key, String member, dou /** * XADD key MAXLEN ~ LEN ID field string [field string ...] - * + * * @param key * @param id * @param hash @@ -410,10 +412,10 @@ List georadiusByMemberReadonly(String key, String member, dou * @return */ StreamEntryID xadd(String key, StreamEntryID id, Map hash, long maxLen, boolean approximateLength); - + /** * XLEN key - * + * * @param key * @return */ @@ -421,7 +423,7 @@ List georadiusByMemberReadonly(String key, String member, dou /** * XRANGE key start end [COUNT count] - * + * * @param key * @param start * @param end @@ -439,14 +441,14 @@ List georadiusByMemberReadonly(String key, String member, dou * @return */ List xrevrange(String key, StreamEntryID end, StreamEntryID start, int count); - + /** * @deprecated Will be removed in future version. Use * {@link MultiKeyJedisClusterCommands#xread(int, long, java.util.Map.Entry...)}. */ @Deprecated List>> xread(int count, long block, Map.Entry... streams); - + /** * XACK key group ID [ID ...] * @param key @@ -455,38 +457,38 @@ List georadiusByMemberReadonly(String key, String member, dou * @return */ Long xack(String key, String group, StreamEntryID... ids); - + /** * XGROUP CREATE - * + * * @param key * @param groupname * @param id * @return */ String xgroupCreate( String key, String groupname, StreamEntryID id, boolean makeStream); - + /** * XGROUP SETID - * + * * @param key * @param groupname * @param id * @return */ String xgroupSetID( String key, String groupname, StreamEntryID id); - + /** * XGROUP DESTROY - * + * * @param key * @param groupname * @return */ Long xgroupDestroy( String key, String groupname); - + /** - * XGROUP DELCONSUMER + * XGROUP DELCONSUMER * @param key * @param groupname * @param consumername @@ -501,10 +503,10 @@ List georadiusByMemberReadonly(String key, String member, dou @Deprecated List>> xreadGroup(String groupname, String consumer, int count, long block, boolean noAck, Map.Entry... streams); - + /** * XPENDING key group [start end count] [consumer] - * + * * @param key * @param groupname * @param start @@ -514,7 +516,7 @@ List georadiusByMemberReadonly(String key, String member, dou * @return */ List xpending(String key, String groupname, StreamEntryID start, StreamEntryID end, int count, String consumername); - + /** * XDEL key ID [ID ...] * @param key @@ -522,7 +524,7 @@ List georadiusByMemberReadonly(String key, String member, dou * @return */ Long xdel( String key, StreamEntryID... ids); - + /** * XTRIM key MAXLEN [~] count * @param key @@ -531,13 +533,13 @@ List georadiusByMemberReadonly(String key, String member, dou * @return */ Long xtrim( String key, long maxLen, boolean approximateLength); - + /** * XCLAIM * [IDLE ] [TIME ] [RETRYCOUNT ] * [FORCE] [JUSTID] - */ - List xclaim( String key, String group, String consumername, long minIdleTime, + */ + List xclaim( String key, String group, String consumername, long minIdleTime, long newIdleTime, int retries, boolean force, StreamEntryID... ids); Long waitReplicas(String key, int replicas, long timeout); diff --git a/src/main/java/redis/clients/jedis/commands/JedisCommands.java b/src/main/java/redis/clients/jedis/commands/JedisCommands.java index cb50b08ae5..8c0c1cf127 100644 --- a/src/main/java/redis/clients/jedis/commands/JedisCommands.java +++ b/src/main/java/redis/clients/jedis/commands/JedisCommands.java @@ -34,7 +34,7 @@ public interface JedisCommands { String set(String key, String value, SetParams params); String get(String key); - + String getDel(String key); Boolean exists(String key); @@ -65,7 +65,7 @@ default String restoreReplace(String key, int ttl, byte[] serializedValue) { String restoreReplace(String key, long ttl, byte[] serializedValue); - + /** * @deprecated Use {@link #expire(java.lang.String, long)}. */ @@ -216,6 +216,8 @@ default String setex(String key, int seconds, String value) { Long zadd(String key, Map scoreMembers, ZAddParams params); + Double zaddIncr(String key, double score, String member, ZAddParams params); + Set zrange(String key, long start, long stop); Long zrem(String key, String... members); @@ -388,7 +390,7 @@ List georadiusByMemberReadonly(String key, String member, dou * Executes BITFIELD Redis command * @param key * @param arguments - * @return + * @return */ List bitfield(String key, String...arguments); @@ -396,7 +398,7 @@ List georadiusByMemberReadonly(String key, String member, dou /** * Used for HSTRLEN Redis command - * @param key + * @param key * @param field * @return length of the value for key */ @@ -404,7 +406,7 @@ List georadiusByMemberReadonly(String key, String member, dou /** * XADD key ID field string [field string ...] - * + * * @param key * @param id * @param hash @@ -414,7 +416,7 @@ List georadiusByMemberReadonly(String key, String member, dou /** * XADD key MAXLEN ~ LEN ID field string [field string ...] - * + * * @param key * @param id * @param hash @@ -423,10 +425,10 @@ List georadiusByMemberReadonly(String key, String member, dou * @return */ StreamEntryID xadd(String key, StreamEntryID id, Map hash, long maxLen, boolean approximateLength); - + /** * XLEN key - * + * * @param key * @return */ @@ -434,39 +436,39 @@ List georadiusByMemberReadonly(String key, String member, dou /** * XRANGE key start end [COUNT count] - * + * * @param key - * @param start minimum {@link StreamEntryID} for the retrieved range, passing null will indicate minimum ID possible in the stream + * @param start minimum {@link StreamEntryID} for the retrieved range, passing null will indicate minimum ID possible in the stream * @param end maximum {@link StreamEntryID} for the retrieved range, passing null will indicate maximum ID possible in the stream - * @param count maximum number of entries returned - * @return The entries with IDs matching the specified range. + * @param count maximum number of entries returned + * @return The entries with IDs matching the specified range. */ List xrange(String key, StreamEntryID start, StreamEntryID end, int count); /** * XREVRANGE key end start [COUNT ] - * + * * @param key - * @param start minimum {@link StreamEntryID} for the retrieved range, passing null will indicate minimum ID possible in the stream + * @param start minimum {@link StreamEntryID} for the retrieved range, passing null will indicate minimum ID possible in the stream * @param end maximum {@link StreamEntryID} for the retrieved range, passing null will indicate maximum ID possible in the stream - * @param count The entries with IDs matching the specified range. + * @param count The entries with IDs matching the specified range. * @return the entries with IDs matching the specified range, from the higher ID to the lower ID matching. */ List xrevrange(String key, StreamEntryID end, StreamEntryID start, int count); - + /** * XACK key group ID [ID ...] - * + * * @param key * @param group * @param ids * @return */ long xack(String key, String group, StreamEntryID... ids); - + /** * XGROUP CREATE - * + * * @param key * @param groupname * @param id @@ -474,28 +476,28 @@ List georadiusByMemberReadonly(String key, String member, dou * @return */ String xgroupCreate( String key, String groupname, StreamEntryID id, boolean makeStream); - + /** * XGROUP SETID - * + * * @param key * @param groupname * @param id * @return */ String xgroupSetID( String key, String groupname, StreamEntryID id); - + /** * XGROUP DESTROY - * + * * @param key * @param groupname * @return */ long xgroupDestroy( String key, String groupname); - + /** - * XGROUP DELCONSUMER + * XGROUP DELCONSUMER * @param key * @param groupname * @param consumername @@ -505,7 +507,7 @@ List georadiusByMemberReadonly(String key, String member, dou /** * XPENDING key group [start end count] [consumer] - * + * * @param key * @param groupname * @param start @@ -515,7 +517,7 @@ List georadiusByMemberReadonly(String key, String member, dou * @return */ List xpending(String key, String groupname, StreamEntryID start, StreamEntryID end, int count, String consumername); - + /** * XDEL key ID [ID ...] * @param key @@ -523,7 +525,7 @@ List georadiusByMemberReadonly(String key, String member, dou * @return */ long xdel( String key, StreamEntryID... ids); - + /** * XTRIM key MAXLEN [~] count * @param key @@ -532,13 +534,13 @@ List georadiusByMemberReadonly(String key, String member, dou * @return */ long xtrim( String key, long maxLen, boolean approximate); - + /** * XCLAIM * [IDLE ] [TIME ] [RETRYCOUNT ] * [FORCE] [JUSTID] - */ - List xclaim( String key, String group, String consumername, long minIdleTime, + */ + List xclaim( String key, String group, String consumername, long minIdleTime, long newIdleTime, int retries, boolean force, StreamEntryID... ids); /** diff --git a/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java index a7f1a61537..81763c0551 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java @@ -104,6 +104,13 @@ public void zaddWithParams() { jedis.zadd("foo", 2d, "b", ZAddParams.zAddParams().gt()); assertEquals(Double.valueOf(2d), jedis.zscore("foo", "b")); + // incr: don't update already existing elements. + assertNull(jedis.zaddIncr("foo", 1d, "b", ZAddParams.zAddParams().nx())); + assertEquals(Double.valueOf(2d), jedis.zscore("foo", "b")); + // incr: update elements that already exist. + assertEquals(Double.valueOf(3d), jedis.zaddIncr("foo", 1d,"b", ZAddParams.zAddParams().xx())); + assertEquals(Double.valueOf(3d), jedis.zscore("foo", "b")); + // binary jedis.del(bfoo); @@ -135,6 +142,13 @@ public void zaddWithParams() { assertEquals(Double.valueOf(1d), jedis.zscore(bfoo, bb)); jedis.zadd(bfoo, 2d, bb, ZAddParams.zAddParams().gt()); assertEquals(Double.valueOf(2d), jedis.zscore(bfoo, bb)); + + // incr: don't update already existing elements. + assertNull(jedis.zaddIncr(bfoo, 1d, bb, ZAddParams.zAddParams().nx())); + assertEquals(Double.valueOf(2d), jedis.zscore(bfoo, bb)); + // incr: update elements that already exist. + assertEquals(Double.valueOf(3d), jedis.zaddIncr(bfoo, 1d, bb, ZAddParams.zAddParams().xx())); + assertEquals(Double.valueOf(3d), jedis.zscore(bfoo, bb)); } @Test