Skip to content

Commit 966aeb8

Browse files
author
dengliming
authored
Add support CH, NX, XX arguments to GEOADD (#2421)
1 parent 5e99d53 commit 966aeb8

17 files changed

+195
-3
lines changed

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import redis.clients.jedis.Protocol.Keyword;
2929
import redis.clients.jedis.params.ClientKillParams;
30+
import redis.clients.jedis.params.GeoAddParams;
3031
import redis.clients.jedis.params.GeoRadiusParam;
3132
import redis.clients.jedis.params.GeoRadiusStoreParam;
3233
import redis.clients.jedis.params.GetExParams;
@@ -1312,14 +1313,17 @@ public void geoadd(final byte[] key, final double longitude, final double latitu
13121313
}
13131314

13141315
public void geoadd(final byte[] key, final Map<byte[], GeoCoordinate> memberCoordinateMap) {
1315-
List<byte[]> args = new ArrayList<>(memberCoordinateMap.size() * 3 + 1);
1316-
args.add(key);
1316+
geoadd(key, GeoAddParams.geoAddParams(), memberCoordinateMap);
1317+
}
1318+
1319+
public void geoadd(final byte[] key, final GeoAddParams params, final Map<byte[], GeoCoordinate> memberCoordinateMap) {
1320+
List<byte[]> args = new ArrayList<>(memberCoordinateMap.size() * 3);
13171321
args.addAll(convertGeoCoordinateMapToByteArrays(memberCoordinateMap));
13181322

13191323
byte[][] argsArray = new byte[args.size()][];
13201324
args.toArray(argsArray);
13211325

1322-
sendCommand(GEOADD, argsArray);
1326+
sendCommand(GEOADD, params.getByteParams(key, argsArray));
13231327
}
13241328

13251329
public void geodist(final byte[] key, final byte[] member1, final byte[] member2) {

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import redis.clients.jedis.exceptions.JedisDataException;
3131
import redis.clients.jedis.exceptions.JedisException;
3232
import redis.clients.jedis.params.ClientKillParams;
33+
import redis.clients.jedis.params.GeoAddParams;
3334
import redis.clients.jedis.params.GeoRadiusParam;
3435
import redis.clients.jedis.params.GeoRadiusStoreParam;
3536
import redis.clients.jedis.params.GetExParams;
@@ -4170,6 +4171,13 @@ public Long geoadd(final byte[] key, final Map<byte[], GeoCoordinate> memberCoor
41704171
return client.getIntegerReply();
41714172
}
41724173

4174+
@Override
4175+
public Long geoadd(final byte[] key, final GeoAddParams params, final Map<byte[], GeoCoordinate> memberCoordinateMap) {
4176+
checkIsInMultiOrPipeline();
4177+
client.geoadd(key, params, memberCoordinateMap);
4178+
return client.getIntegerReply();
4179+
}
4180+
41734181
@Override
41744182
public Double geodist(final byte[] key, final byte[] member1, final byte[] member2) {
41754183
checkIsInMultiOrPipeline();

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import redis.clients.jedis.commands.JedisClusterBinaryScriptingCommands;
55
import redis.clients.jedis.commands.MultiKeyBinaryJedisClusterCommands;
66
import redis.clients.jedis.commands.ProtocolCommand;
7+
import redis.clients.jedis.params.GeoAddParams;
78
import redis.clients.jedis.params.GeoRadiusParam;
89
import redis.clients.jedis.params.GeoRadiusStoreParam;
910
import redis.clients.jedis.params.GetExParams;
@@ -1988,6 +1989,16 @@ public Long execute(Jedis connection) {
19881989
}.runBinary(key);
19891990
}
19901991

1992+
@Override
1993+
public Long geoadd(byte[] key, GeoAddParams params, Map<byte[], GeoCoordinate> memberCoordinateMap) {
1994+
return new JedisClusterCommand<Long>(connectionHandler, maxAttempts) {
1995+
@Override
1996+
public Long execute(Jedis connection) {
1997+
return connection.geoadd(key, params, memberCoordinateMap);
1998+
}
1999+
}.runBinary(key);
2000+
}
2001+
19912002
@Override
19922003
public Double geodist(final byte[] key, final byte[] member1, final byte[] member2) {
19932004
return new JedisClusterCommand<Double>(connectionHandler, maxAttempts) {

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import redis.clients.jedis.commands.BinaryJedisCommands;
1111
import redis.clients.jedis.commands.ProtocolCommand;
1212
import redis.clients.jedis.exceptions.JedisConnectionException;
13+
import redis.clients.jedis.params.GeoAddParams;
1314
import redis.clients.jedis.params.GeoRadiusParam;
1415
import redis.clients.jedis.params.GetExParams;
1516
import redis.clients.jedis.params.SetParams;
@@ -946,6 +947,12 @@ public Long geoadd(final byte[] key, final Map<byte[], GeoCoordinate> memberCoor
946947
return j.geoadd(key, memberCoordinateMap);
947948
}
948949

950+
@Override
951+
public Long geoadd(byte[] key, GeoAddParams params, Map<byte[], GeoCoordinate> memberCoordinateMap) {
952+
Jedis j = getShard(key);
953+
return j.geoadd(key, params, memberCoordinateMap);
954+
}
955+
949956
@Override
950957
public Double geodist(final byte[] key, final byte[] member1, final byte[] member2) {
951958
Jedis j = getShard(key);

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import javax.net.ssl.SSLSocketFactory;
1515

1616
import redis.clients.jedis.commands.Commands;
17+
import redis.clients.jedis.params.GeoAddParams;
1718
import redis.clients.jedis.params.GeoRadiusParam;
1819
import redis.clients.jedis.params.GeoRadiusStoreParam;
1920
import redis.clients.jedis.params.GetExParams;
@@ -1181,6 +1182,10 @@ public void geoadd(final String key, final Map<String, GeoCoordinate> memberCoor
11811182
geoadd(SafeEncoder.encode(key), convertMemberCoordinateMapToBinary(memberCoordinateMap));
11821183
}
11831184

1185+
public void geoadd(final String key, final GeoAddParams params, final Map<String, GeoCoordinate> memberCoordinateMap) {
1186+
geoadd(SafeEncoder.encode(key), params, convertMemberCoordinateMapToBinary(memberCoordinateMap));
1187+
}
1188+
11841189
public void geodist(final String key, final String member1, final String member2) {
11851190
geodist(SafeEncoder.encode(key), SafeEncoder.encode(member1), SafeEncoder.encode(member2));
11861191
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import redis.clients.jedis.commands.ProtocolCommand;
2323
import redis.clients.jedis.commands.ScriptingCommands;
2424
import redis.clients.jedis.commands.SentinelCommands;
25+
import redis.clients.jedis.params.GeoAddParams;
2526
import redis.clients.jedis.params.GeoRadiusParam;
2627
import redis.clients.jedis.params.GeoRadiusStoreParam;
2728
import redis.clients.jedis.params.GetExParams;
@@ -3709,6 +3710,13 @@ public Long geoadd(final String key, final Map<String, GeoCoordinate> memberCoor
37093710
return client.getIntegerReply();
37103711
}
37113712

3713+
@Override
3714+
public Long geoadd(final String key, final GeoAddParams params, final Map<String, GeoCoordinate> memberCoordinateMap) {
3715+
checkIsInMultiOrPipeline();
3716+
client.geoadd(key, params, memberCoordinateMap);
3717+
return client.getIntegerReply();
3718+
}
3719+
37123720
@Override
37133721
public Double geodist(final String key, final String member1, final String member2) {
37143722
checkIsInMultiOrPipeline();

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package redis.clients.jedis;
22

33
import redis.clients.jedis.commands.ProtocolCommand;
4+
import redis.clients.jedis.params.GeoAddParams;
45
import redis.clients.jedis.params.GeoRadiusParam;
56
import redis.clients.jedis.params.GeoRadiusStoreParam;
67
import redis.clients.jedis.params.GetExParams;
@@ -2178,6 +2179,16 @@ public Long execute(Jedis connection) {
21782179
}.run(key);
21792180
}
21802181

2182+
@Override
2183+
public Long geoadd(String key, GeoAddParams params, Map<String, GeoCoordinate> memberCoordinateMap) {
2184+
return new JedisClusterCommand<Long>(connectionHandler, maxAttempts) {
2185+
@Override
2186+
public Long execute(Jedis connection) {
2187+
return connection.geoadd(key, params, memberCoordinateMap);
2188+
}
2189+
}.run(key);
2190+
}
2191+
21812192
@Override
21822193
public Double geodist(final String key, final String member1, final String member2) {
21832194
return new JedisClusterCommand<Double>(connectionHandler, maxAttempts) {

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import redis.clients.jedis.commands.BinaryRedisPipeline;
88
import redis.clients.jedis.commands.ProtocolCommand;
99
import redis.clients.jedis.commands.RedisPipeline;
10+
import redis.clients.jedis.params.GeoAddParams;
1011
import redis.clients.jedis.params.GeoRadiusParam;
1112
import redis.clients.jedis.params.GetExParams;
1213
import redis.clients.jedis.params.SetParams;
@@ -1814,6 +1815,18 @@ public Response<Long> geoadd(final String key,
18141815
return getResponse(BuilderFactory.LONG);
18151816
}
18161817

1818+
@Override
1819+
public Response<Long> geoadd(String key, GeoAddParams params, Map<String, GeoCoordinate> memberCoordinateMap) {
1820+
getClient(key).geoadd(key, params, memberCoordinateMap);
1821+
return getResponse(BuilderFactory.LONG);
1822+
}
1823+
1824+
@Override
1825+
public Response<Long> geoadd(byte[] key, GeoAddParams params, Map<byte[], GeoCoordinate> memberCoordinateMap) {
1826+
getClient(key).geoadd(key, params, memberCoordinateMap);
1827+
return getResponse(BuilderFactory.LONG);
1828+
}
1829+
18171830
@Override
18181831
public Response<Double> geodist(final byte[] key, final byte[] member1, final byte[] member2) {
18191832
getClient(key).geodist(key, member1, member2);

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import redis.clients.jedis.commands.JedisCommands;
1111
import redis.clients.jedis.commands.ProtocolCommand;
12+
import redis.clients.jedis.params.GeoAddParams;
1213
import redis.clients.jedis.params.GeoRadiusParam;
1314
import redis.clients.jedis.params.GetExParams;
1415
import redis.clients.jedis.params.SetParams;
@@ -973,6 +974,12 @@ public Long geoadd(final String key, final Map<String, GeoCoordinate> memberCoor
973974
return j.geoadd(key, memberCoordinateMap);
974975
}
975976

977+
@Override
978+
public Long geoadd(String key, GeoAddParams params, Map<String, GeoCoordinate> memberCoordinateMap) {
979+
Jedis j = getShard(key);
980+
return j.geoadd(key, params, memberCoordinateMap);
981+
}
982+
976983
@Override
977984
public Double geodist(final String key, final String member1, final String member2) {
978985
Jedis j = getShard(key);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import redis.clients.jedis.ScanResult;
99
import redis.clients.jedis.SortingParams;
1010
import redis.clients.jedis.Tuple;
11+
import redis.clients.jedis.params.GeoAddParams;
1112
import redis.clients.jedis.params.GeoRadiusParam;
1213
import redis.clients.jedis.params.GetExParams;
1314
import redis.clients.jedis.params.SetParams;
@@ -308,6 +309,8 @@ default String setex(byte[] key, int seconds, byte[] value) {
308309

309310
Long geoadd(byte[] key, Map<byte[], GeoCoordinate> memberCoordinateMap);
310311

312+
Long geoadd(byte[] key, GeoAddParams params, Map<byte[], GeoCoordinate> memberCoordinateMap);
313+
311314
Double geodist(byte[] key, byte[] member1, byte[] member2);
312315

313316
Double geodist(byte[] key, byte[] member1, byte[] member2, GeoUnit unit);

0 commit comments

Comments
 (0)