Skip to content

Commit e2d8c69

Browse files
authored
XRANGE & XREVRANGE without COUNT option (#2460)
1 parent 4fb5121 commit e2d8c69

17 files changed

+222
-6
lines changed

src/main/java/redis/clients/jedis/BinaryClient.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1582,6 +1582,10 @@ public void xlen(final byte[] key) {
15821582
sendCommand(XLEN, key);
15831583
}
15841584

1585+
public void xrange(final byte[] key, final byte[] start, final byte[] end) {
1586+
sendCommand(XRANGE, key, start, end);
1587+
}
1588+
15851589
/**
15861590
* @deprecated Use {@link #xrange(byte[], byte[], byte[], int)}.
15871591
*/
@@ -1594,6 +1598,10 @@ public void xrange(final byte[] key, final byte[] start, final byte[] end, final
15941598
sendCommand(XRANGE, key, start, end, Keyword.COUNT.getRaw(), toByteArray(count));
15951599
}
15961600

1601+
public void xrevrange(final byte[] key, final byte[] end, final byte[] start) {
1602+
sendCommand(XREVRANGE, key, end, start);
1603+
}
1604+
15971605
public void xrevrange(final byte[] key, final byte[] end, final byte[] start, final int count) {
15981606
sendCommand(XREVRANGE, key, end, start, Keyword.COUNT.getRaw(), toByteArray(count));
15991607
}

src/main/java/redis/clients/jedis/BinaryJedis.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4579,13 +4579,27 @@ public Long xlen(byte[] key) {
45794579
return client.getIntegerReply();
45804580
}
45814581

4582+
@Override
4583+
public List<byte[]> xrange(byte[] key, byte[] start, byte[] end) {
4584+
checkIsInMultiOrPipeline();
4585+
client.xrange(key, start, end);
4586+
return client.getBinaryMultiBulkReply();
4587+
}
4588+
45824589
@Override
45834590
public List<byte[]> xrange(byte[] key, byte[] start, byte[] end, int count) {
45844591
checkIsInMultiOrPipeline();
45854592
client.xrange(key, start, end, count);
45864593
return client.getBinaryMultiBulkReply();
45874594
}
45884595

4596+
@Override
4597+
public List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start) {
4598+
checkIsInMultiOrPipeline();
4599+
client.xrevrange(key, end, start);
4600+
return client.getBinaryMultiBulkReply();
4601+
}
4602+
45894603
@Override
45904604
public List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
45914605
checkIsInMultiOrPipeline();

src/main/java/redis/clients/jedis/BinaryJedisCluster.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2406,6 +2406,16 @@ public Long execute(Jedis connection) {
24062406
}.runBinary(key);
24072407
}
24082408

2409+
@Override
2410+
public List<byte[]> xrange(final byte[] key, final byte[] start, final byte[] end) {
2411+
return new JedisClusterCommand<List<byte[]>>(connectionHandler, maxAttempts) {
2412+
@Override
2413+
public List<byte[]> execute(Jedis connection) {
2414+
return connection.xrange(key, start, end);
2415+
}
2416+
}.runBinary(key);
2417+
}
2418+
24092419
@Override
24102420
public List<byte[]> xrange(final byte[] key, final byte[] start, final byte[] end,
24112421
final long count) {
@@ -2427,6 +2437,16 @@ public List<byte[]> execute(Jedis connection) {
24272437
}.runBinary(key);
24282438
}
24292439

2440+
@Override
2441+
public List<byte[]> xrevrange(final byte[] key, final byte[] end, final byte[] start) {
2442+
return new JedisClusterCommand<List<byte[]>>(connectionHandler, maxAttempts) {
2443+
@Override
2444+
public List<byte[]> execute(Jedis connection) {
2445+
return connection.xrevrange(key, end, start);
2446+
}
2447+
}.runBinary(key);
2448+
}
2449+
24302450
@Override
24312451
public List<byte[]> xrevrange(final byte[] key, final byte[] end, final byte[] start,
24322452
final int count) {

src/main/java/redis/clients/jedis/BinaryShardedJedis.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1139,12 +1139,24 @@ public Long xlen(byte[] key) {
11391139
return j.xlen(key);
11401140
}
11411141

1142+
@Override
1143+
public List<byte[]> xrange(byte[] key, byte[] start, byte[] end) {
1144+
Jedis j = getShard(key);
1145+
return j.xrange(key, start, end);
1146+
}
1147+
11421148
@Override
11431149
public List<byte[]> xrange(byte[] key, byte[] start, byte[] end, int count) {
11441150
Jedis j = getShard(key);
11451151
return j.xrange(key, start, end, count);
11461152
}
11471153

1154+
@Override
1155+
public List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start) {
1156+
Jedis j = getShard(key);
1157+
return j.xrevrange(key, end, start);
1158+
}
1159+
11481160
@Override
11491161
public List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
11501162
Jedis j = getShard(key);

src/main/java/redis/clients/jedis/Client.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1366,13 +1366,32 @@ public void xlen(final String key) {
13661366
xlen(SafeEncoder.encode(key));
13671367
}
13681368

1369+
@Override
1370+
public void xrange(final String key, final StreamEntryID start, final StreamEntryID end) {
1371+
xrange(SafeEncoder.encode(key), SafeEncoder.encode(start == null ? "-" : start.toString()),
1372+
SafeEncoder.encode(end == null ? "+" : end.toString()));
1373+
}
1374+
1375+
@Override
1376+
public void xrange(final String key, final StreamEntryID start, final StreamEntryID end,
1377+
final int count) {
1378+
xrange(SafeEncoder.encode(key), SafeEncoder.encode(start == null ? "-" : start.toString()),
1379+
SafeEncoder.encode(end == null ? "+" : end.toString()), count);
1380+
}
1381+
13691382
@Override
13701383
public void xrange(final String key, final StreamEntryID start, final StreamEntryID end,
13711384
final long count) {
13721385
xrange(SafeEncoder.encode(key), SafeEncoder.encode(start == null ? "-" : start.toString()),
13731386
SafeEncoder.encode(end == null ? "+" : end.toString()), count);
13741387
}
13751388

1389+
@Override
1390+
public void xrevrange(String key, StreamEntryID end, StreamEntryID start) {
1391+
xrevrange(SafeEncoder.encode(key), SafeEncoder.encode(end == null ? "+" : end.toString()),
1392+
SafeEncoder.encode(start == null ? "-" : start.toString()));
1393+
}
1394+
13761395
@Override
13771396
public void xrevrange(String key, StreamEntryID end, StreamEntryID start, int count) {
13781397
xrevrange(SafeEncoder.encode(key), SafeEncoder.encode(end == null ? "+" : end.toString()),

src/main/java/redis/clients/jedis/Jedis.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4079,6 +4079,13 @@ public Long xlen(final String key) {
40794079
return client.getIntegerReply();
40804080
}
40814081

4082+
@Override
4083+
public List<StreamEntry> xrange(final String key, final StreamEntryID start, final StreamEntryID end) {
4084+
checkIsInMultiOrPipeline();
4085+
client.xrange(key, start, end);
4086+
return BuilderFactory.STREAM_ENTRY_LIST.build(client.getObjectMultiBulkReply());
4087+
}
4088+
40824089
/**
40834090
* {@inheritDoc}
40844091
*/
@@ -4090,6 +4097,14 @@ public List<StreamEntry> xrange(final String key, final StreamEntryID start,
40904097
return BuilderFactory.STREAM_ENTRY_LIST.build(client.getObjectMultiBulkReply());
40914098
}
40924099

4100+
@Override
4101+
public List<StreamEntry> xrevrange(final String key, final StreamEntryID end,
4102+
final StreamEntryID start) {
4103+
checkIsInMultiOrPipeline();
4104+
client.xrevrange(key, end, start);
4105+
return BuilderFactory.STREAM_ENTRY_LIST.build(client.getObjectMultiBulkReply());
4106+
}
4107+
40934108
/**
40944109
* {@inheritDoc}
40954110
*/

src/main/java/redis/clients/jedis/JedisCluster.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2497,6 +2497,17 @@ public Long execute(Jedis connection) {
24972497
}.run(key);
24982498
}
24992499

2500+
@Override
2501+
public List<StreamEntry> xrange(final String key, final StreamEntryID start,
2502+
final StreamEntryID end) {
2503+
return new JedisClusterCommand<List<StreamEntry>>(connectionHandler, maxAttempts) {
2504+
@Override
2505+
public List<StreamEntry> execute(Jedis connection) {
2506+
return connection.xrange(key, start, end);
2507+
}
2508+
}.run(key);
2509+
}
2510+
25002511
@Override
25012512
public List<StreamEntry> xrange(final String key, final StreamEntryID start,
25022513
final StreamEntryID end, final int count) {
@@ -2508,6 +2519,17 @@ public List<StreamEntry> execute(Jedis connection) {
25082519
}.run(key);
25092520
}
25102521

2522+
@Override
2523+
public List<StreamEntry> xrevrange(final String key, final StreamEntryID end,
2524+
final StreamEntryID start) {
2525+
return new JedisClusterCommand<List<StreamEntry>>(connectionHandler, maxAttempts) {
2526+
@Override
2527+
public List<StreamEntry> execute(Jedis connection) {
2528+
return connection.xrevrange(key, end, start);
2529+
}
2530+
}.run(key);
2531+
}
2532+
25112533
@Override
25122534
public List<StreamEntry> xrevrange(final String key, final StreamEntryID end,
25132535
final StreamEntryID start, final int count) {

src/main/java/redis/clients/jedis/PipelineBase.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2136,6 +2136,18 @@ public Response<Long> xlen(byte[] key) {
21362136
return getResponse(BuilderFactory.LONG);
21372137
}
21382138

2139+
@Override
2140+
public Response<List<StreamEntry>> xrange(String key, StreamEntryID start, StreamEntryID end) {
2141+
getClient(key).xrange(key, start, end);
2142+
return getResponse(BuilderFactory.STREAM_ENTRY_LIST);
2143+
}
2144+
2145+
@Override
2146+
public Response<List<byte[]>> xrange(byte[] key, byte[] start, byte[] end) {
2147+
getClient(key).xrange(key, start, end);
2148+
return getResponse(BuilderFactory.BYTE_ARRAY_LIST);
2149+
}
2150+
21392151
@Override
21402152
public Response<List<StreamEntry>> xrange(String key, StreamEntryID start, StreamEntryID end,
21412153
int count) {
@@ -2149,6 +2161,18 @@ public Response<List<byte[]>> xrange(byte[] key, byte[] start, byte[] end, int c
21492161
return getResponse(BuilderFactory.BYTE_ARRAY_LIST);
21502162
}
21512163

2164+
@Override
2165+
public Response<List<StreamEntry>> xrevrange(String key, StreamEntryID end, StreamEntryID start) {
2166+
getClient(key).xrevrange(key, end, start);
2167+
return getResponse(BuilderFactory.STREAM_ENTRY_LIST);
2168+
}
2169+
2170+
@Override
2171+
public Response<List<byte[]>> xrevrange(byte[] key, byte[] end, byte[] start) {
2172+
getClient(key).xrevrange(key, end, start);
2173+
return getResponse(BuilderFactory.BYTE_ARRAY_LIST);
2174+
}
2175+
21522176
@Override
21532177
public Response<List<StreamEntry>> xrevrange(String key, StreamEntryID end, StreamEntryID start,
21542178
int count) {

src/main/java/redis/clients/jedis/ShardedJedis.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,6 +1135,12 @@ public Long xlen(String key) {
11351135
return j.xlen(key);
11361136
}
11371137

1138+
@Override
1139+
public List<StreamEntry> xrange(String key, StreamEntryID start, StreamEntryID end) {
1140+
Jedis j = getShard(key);
1141+
return j.xrange(key, start, end);
1142+
}
1143+
11381144
@Override
11391145
public List<StreamEntry> xrange(String key, StreamEntryID start, StreamEntryID end, int count) {
11401146
Jedis j = getShard(key);
@@ -1183,6 +1189,12 @@ public long xtrim(String key, long maxLen, boolean approximateLength) {
11831189
return j.xtrim(key, maxLen, approximateLength);
11841190
}
11851191

1192+
@Override
1193+
public List<StreamEntry> xrevrange(String key, StreamEntryID end, StreamEntryID start) {
1194+
Jedis j = getShard(key);
1195+
return j.xrevrange(key, end, start);
1196+
}
1197+
11861198
@Override
11871199
public List<StreamEntry> xrevrange(String key, StreamEntryID end, StreamEntryID start, int count) {
11881200
Jedis j = getShard(key);

src/main/java/redis/clients/jedis/commands/BinaryJedisClusterCommands.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,8 @@ List<GeoRadiusResponse> georadiusByMemberReadonly(byte[] key, byte[] member, dou
387387

388388
Long xlen(byte[] key);
389389

390+
List<byte[]> xrange(byte[] key, byte[] start, byte[] end);
391+
390392
/**
391393
* @deprecated Use {@link #xrange(byte[], byte[], byte[], int)}.
392394
*/
@@ -395,6 +397,8 @@ List<GeoRadiusResponse> georadiusByMemberReadonly(byte[] key, byte[] member, dou
395397

396398
List<byte[]> xrange(byte[] key, byte[] start, byte[] end, int count);
397399

400+
List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start);
401+
398402
List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start, int count);
399403

400404
Long xack(byte[] key, byte[] group, byte[]... ids);

0 commit comments

Comments
 (0)