Skip to content

Commit

Permalink
Added support for georadius_ro, georadiusbymember_ro commands (redis#…
Browse files Browse the repository at this point in the history
…1841)

* Add SSL support to JedisCluster (redis#1550)

* Add SSL support to JedisCluster

* Remove unused imports from SSLJedisClusterTest

* Add JedisClusterPortMap interface for mapping between plaintext and SSL ports.

* Fix casing in JedisClusterPortMap

* Add new constructor for JedisClusterInfoCache instead of modifying existing one to fix backwards compatibility issue

* Undo unintended formatting changes.

* Improve name of test case in SSLJedisClusterTest

* Fix logic for closing JedisCluster objects in SSLJedisClusterTest

* Add option to specify mapping between redis and ssl hostnames

* Remove unneeded public access modifiers

* Support for geo RO commands.

* Support for geo RO commands.

* Support for geo RO commands.

* Change _ro to Readonly for better understanding.

* Change _ro to Readonly for better understanding

Update as per comments

* Change _ro to Readonly for better understanding

Update as per comments

* Minor update. Update commands.

https://redis.io/commands/georadius

* Update as per comments.

* Revert "Add SSL support to JedisCluster (redis#1550)"

This reverts commit 17901ba.
  • Loading branch information
s-sathish authored and marcosnils committed Aug 14, 2018
1 parent d1af6b4 commit 123aa03
Show file tree
Hide file tree
Showing 17 changed files with 491 additions and 2 deletions.
20 changes: 20 additions & 0 deletions src/main/java/redis/clients/jedis/BinaryClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -1149,21 +1149,41 @@ public void georadius(final byte[] key, final double longitude, final double lat
unit.raw);
}

public void georadiusReadonly(final byte[] key, final double longitude, final double latitude, final double radius, final GeoUnit unit) {
sendCommand(GEORADIUS_RO, key, toByteArray(longitude), toByteArray(latitude), toByteArray(radius),
unit.raw);
}

public void georadius(final byte[] key, final double longitude, final double latitude, final double radius, final GeoUnit unit,
final GeoRadiusParam param) {
sendCommand(GEORADIUS, param.getByteParams(key, toByteArray(longitude), toByteArray(latitude),
toByteArray(radius), unit.raw));
}

public void georadiusReadonly(final byte[] key, final double longitude, final double latitude, final double radius, final GeoUnit unit,
final GeoRadiusParam param) {
sendCommand(GEORADIUS_RO, param.getByteParams(key, toByteArray(longitude), toByteArray(latitude),
toByteArray(radius), unit.raw));
}

public void georadiusByMember(final byte[] key, final byte[] member, final double radius, final GeoUnit unit) {
sendCommand(GEORADIUSBYMEMBER, key, member, toByteArray(radius), unit.raw);
}

public void georadiusByMemberReadonly(final byte[] key, final byte[] member, final double radius, final GeoUnit unit) {
sendCommand(GEORADIUSBYMEMBER_RO, key, member, toByteArray(radius), unit.raw);
}

public void georadiusByMember(final byte[] key, final byte[] member, final double radius, final GeoUnit unit,
final GeoRadiusParam param) {
sendCommand(GEORADIUSBYMEMBER, param.getByteParams(key, member, toByteArray(radius), unit.raw));
}

public void georadiusByMemberReadonly(final byte[] key, final byte[] member, final double radius, final GeoUnit unit,
final GeoRadiusParam param) {
sendCommand(GEORADIUSBYMEMBER_RO, param.getByteParams(key, member, toByteArray(radius), unit.raw));
}

public void moduleLoad(final byte[] path) {
sendCommand(MODULE, Keyword.LOAD.raw, path);
}
Expand Down
32 changes: 32 additions & 0 deletions src/main/java/redis/clients/jedis/BinaryJedis.java
Original file line number Diff line number Diff line change
Expand Up @@ -3706,6 +3706,14 @@ public List<GeoRadiusResponse> georadius(final byte[] key, final double longitud
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusReadonly(final byte[] key, final double longitude, final double latitude,
final double radius, final GeoUnit unit) {
checkIsInMultiOrPipeline();
client.georadiusReadonly(key, longitude, latitude, radius, unit);
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadius(final byte[] key, final double longitude, final double latitude,
final double radius, final GeoUnit unit, final GeoRadiusParam param) {
Expand All @@ -3714,6 +3722,14 @@ public List<GeoRadiusResponse> georadius(final byte[] key, final double longitud
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusReadonly(final byte[] key, final double longitude, final double latitude,
final double radius, final GeoUnit unit, final GeoRadiusParam param) {
checkIsInMultiOrPipeline();
client.georadiusReadonly(key, longitude, latitude, radius, unit, param);
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusByMember(final byte[] key, final byte[] member, final double radius,
final GeoUnit unit) {
Expand All @@ -3722,6 +3738,14 @@ public List<GeoRadiusResponse> georadiusByMember(final byte[] key, final byte[]
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusByMemberReadonly(final byte[] key, final byte[] member, final double radius,
final GeoUnit unit) {
checkIsInMultiOrPipeline();
client.georadiusByMemberReadonly(key, member, radius, unit);
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusByMember(final byte[] key, final byte[] member, final double radius,
final GeoUnit unit, final GeoRadiusParam param) {
Expand All @@ -3730,6 +3754,14 @@ public List<GeoRadiusResponse> georadiusByMember(final byte[] key, final byte[]
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusByMemberReadonly(final byte[] key, final byte[] member, final double radius,
final GeoUnit unit, final GeoRadiusParam param) {
checkIsInMultiOrPipeline();
client.georadiusByMemberReadonly(key, member, radius, unit, param);
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

/**
* A decorator to implement Set from List. Assume that given List do not contains duplicated
* values. The resulting set displays the same ordering, concurrency, and performance
Expand Down
44 changes: 44 additions & 0 deletions src/main/java/redis/clients/jedis/BinaryJedisCluster.java
Original file line number Diff line number Diff line change
Expand Up @@ -1818,6 +1818,17 @@ public List<GeoRadiusResponse> execute(Jedis connection) {
}.runBinary(key);
}

@Override
public List<GeoRadiusResponse> georadiusReadonly(final byte[] key, final double longitude,
final double latitude, final double radius, final GeoUnit unit) {
return new JedisClusterCommand<List<GeoRadiusResponse>>(connectionHandler, maxAttempts) {
@Override
public List<GeoRadiusResponse> execute(Jedis connection) {
return connection.georadiusReadonly(key, longitude, latitude, radius, unit);
}
}.runBinary(key);
}

@Override
public List<GeoRadiusResponse> georadius(final byte[] key, final double longitude,
final double latitude, final double radius, final GeoUnit unit, final GeoRadiusParam param) {
Expand All @@ -1829,6 +1840,17 @@ public List<GeoRadiusResponse> execute(Jedis connection) {
}.runBinary(key);
}

@Override
public List<GeoRadiusResponse> georadiusReadonly(final byte[] key, final double longitude,
final double latitude, final double radius, final GeoUnit unit, final GeoRadiusParam param) {
return new JedisClusterCommand<List<GeoRadiusResponse>>(connectionHandler, maxAttempts) {
@Override
public List<GeoRadiusResponse> execute(Jedis connection) {
return connection.georadiusReadonly(key, longitude, latitude, radius, unit, param);
}
}.runBinary(key);
}

@Override
public List<GeoRadiusResponse> georadiusByMember(final byte[] key, final byte[] member,
final double radius, final GeoUnit unit) {
Expand All @@ -1840,6 +1862,17 @@ public List<GeoRadiusResponse> execute(Jedis connection) {
}.runBinary(key);
}

@Override
public List<GeoRadiusResponse> georadiusByMemberReadonly(final byte[] key, final byte[] member,
final double radius, final GeoUnit unit) {
return new JedisClusterCommand<List<GeoRadiusResponse>>(connectionHandler, maxAttempts) {
@Override
public List<GeoRadiusResponse> execute(Jedis connection) {
return connection.georadiusByMemberReadonly(key, member, radius, unit);
}
}.runBinary(key);
}

@Override
public List<GeoRadiusResponse> georadiusByMember(final byte[] key, final byte[] member,
final double radius, final GeoUnit unit, final GeoRadiusParam param) {
Expand All @@ -1851,6 +1884,17 @@ public List<GeoRadiusResponse> execute(Jedis connection) {
}.runBinary(key);
}

@Override
public List<GeoRadiusResponse> georadiusByMemberReadonly(final byte[] key, final byte[] member,
final double radius, final GeoUnit unit, final GeoRadiusParam param) {
return new JedisClusterCommand<List<GeoRadiusResponse>>(connectionHandler, maxAttempts) {
@Override
public List<GeoRadiusResponse> execute(Jedis connection) {
return connection.georadiusByMemberReadonly(key, member, radius, unit, param);
}
}.runBinary(key);
}

@Override
public Set<byte[]> keys(final byte[] pattern) {
if (pattern == null || pattern.length == 0) {
Expand Down
28 changes: 28 additions & 0 deletions src/main/java/redis/clients/jedis/BinaryShardedJedis.java
Original file line number Diff line number Diff line change
Expand Up @@ -859,27 +859,55 @@ public List<GeoRadiusResponse> georadius(final byte[] key, final double longitud
return j.georadius(key, longitude, latitude, radius, unit);
}

@Override
public List<GeoRadiusResponse> georadiusReadonly(final byte[] key, final double longitude, final double latitude,
final double radius, final GeoUnit unit) {
Jedis j = getShard(key);
return j.georadiusReadonly(key, longitude, latitude, radius, unit);
}

@Override
public List<GeoRadiusResponse> georadius(final byte[] key, final double longitude, final double latitude,
final double radius, final GeoUnit unit, final GeoRadiusParam param) {
Jedis j = getShard(key);
return j.georadius(key, longitude, latitude, radius, unit, param);
}

@Override
public List<GeoRadiusResponse> georadiusReadonly(final byte[] key, final double longitude, final double latitude,
final double radius, final GeoUnit unit, final GeoRadiusParam param) {
Jedis j = getShard(key);
return j.georadiusReadonly(key, longitude, latitude, radius, unit, param);
}

@Override
public List<GeoRadiusResponse> georadiusByMember(final byte[] key, final byte[] member, final double radius,
final GeoUnit unit) {
Jedis j = getShard(key);
return j.georadiusByMember(key, member, radius, unit);
}

@Override
public List<GeoRadiusResponse> georadiusByMemberReadonly(final byte[] key, final byte[] member, final double radius,
final GeoUnit unit) {
Jedis j = getShard(key);
return j.georadiusByMemberReadonly(key, member, radius, unit);
}

@Override
public List<GeoRadiusResponse> georadiusByMember(final byte[] key, final byte[] member, final double radius,
final GeoUnit unit, final GeoRadiusParam param) {
Jedis j = getShard(key);
return j.georadiusByMember(key, member, radius, unit, param);
}

@Override
public List<GeoRadiusResponse> georadiusByMemberReadonly(final byte[] key, final byte[] member, final double radius,
final GeoUnit unit, final GeoRadiusParam param) {
Jedis j = getShard(key);
return j.georadiusByMemberReadonly(key, member, radius, unit, param);
}

@Override
public ScanResult<Map.Entry<byte[], byte[]>> hscan(final byte[] key, final byte[] cursor) {
Jedis j = getShard(key);
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/redis/clients/jedis/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -1083,20 +1083,38 @@ public void georadius(final String key, final double longitude, final double lat
georadius(SafeEncoder.encode(key), longitude, latitude, radius, unit);
}

public void georadiusReadonly(final String key, final double longitude, final double latitude, final double radius, final GeoUnit unit) {
georadiusReadonly(SafeEncoder.encode(key), longitude, latitude, radius, unit);
}

public void georadius(final String key, final double longitude, final double latitude, final double radius, final GeoUnit unit,
final GeoRadiusParam param) {
georadius(SafeEncoder.encode(key), longitude, latitude, radius, unit, param);
}

public void georadiusReadonly(final String key, final double longitude, final double latitude, final double radius, final GeoUnit unit,
final GeoRadiusParam param) {
georadiusReadonly(SafeEncoder.encode(key), longitude, latitude, radius, unit, param);
}

public void georadiusByMember(final String key, final String member, final double radius, final GeoUnit unit) {
georadiusByMember(SafeEncoder.encode(key), SafeEncoder.encode(member), radius, unit);
}

public void georadiusByMemberReadonly(final String key, final String member, final double radius, final GeoUnit unit) {
georadiusByMemberReadonly(SafeEncoder.encode(key), SafeEncoder.encode(member), radius, unit);
}

public void georadiusByMember(final String key, final String member, final double radius, final GeoUnit unit,
final GeoRadiusParam param) {
georadiusByMember(SafeEncoder.encode(key), SafeEncoder.encode(member), radius, unit, param);
}

public void georadiusByMemberReadonly(final String key, final String member, final double radius, final GeoUnit unit,
final GeoRadiusParam param) {
georadiusByMemberReadonly(SafeEncoder.encode(key), SafeEncoder.encode(member), radius, unit, param);
}

public void moduleLoad(final String path) {
moduleLoad(SafeEncoder.encode(path));
}
Expand Down
32 changes: 32 additions & 0 deletions src/main/java/redis/clients/jedis/Jedis.java
Original file line number Diff line number Diff line change
Expand Up @@ -3530,6 +3530,14 @@ public List<GeoRadiusResponse> georadius(final String key, final double longitud
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusReadonly(final String key, final double longitude, final double latitude,
final double radius, final GeoUnit unit) {
checkIsInMultiOrPipeline();
client.georadiusReadonly(key, longitude, latitude, radius, unit);
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadius(final String key, final double longitude, final double latitude,
final double radius, final GeoUnit unit, final GeoRadiusParam param) {
Expand All @@ -3538,6 +3546,14 @@ public List<GeoRadiusResponse> georadius(final String key, final double longitud
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusReadonly(final String key, final double longitude, final double latitude,
final double radius, final GeoUnit unit, final GeoRadiusParam param) {
checkIsInMultiOrPipeline();
client.georadiusReadonly(key, longitude, latitude, radius, unit, param);
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusByMember(final String key, final String member, final double radius,
final GeoUnit unit) {
Expand All @@ -3546,6 +3562,14 @@ public List<GeoRadiusResponse> georadiusByMember(final String key, final String
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusByMemberReadonly(final String key, final String member, final double radius,
final GeoUnit unit) {
checkIsInMultiOrPipeline();
client.georadiusByMemberReadonly(key, member, radius, unit);
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusByMember(final String key, final String member, final double radius,
final GeoUnit unit, final GeoRadiusParam param) {
Expand All @@ -3554,6 +3578,14 @@ public List<GeoRadiusResponse> georadiusByMember(final String key, final String
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public List<GeoRadiusResponse> georadiusByMemberReadonly(final String key, final String member, final double radius,
final GeoUnit unit, final GeoRadiusParam param) {
checkIsInMultiOrPipeline();
client.georadiusByMemberReadonly(key, member, radius, unit, param);
return BuilderFactory.GEORADIUS_WITH_PARAMS_RESULT.build(client.getObjectMultiBulkReply());
}

@Override
public String moduleLoad(final String path) {
client.moduleLoad(path);
Expand Down
Loading

0 comments on commit 123aa03

Please sign in to comment.