diff --git a/src/main/java/com/mapabc/api/Tile38Template.java b/src/main/java/com/mapabc/api/Tile38Template.java index b1fb45a..7b9c50e 100644 --- a/src/main/java/com/mapabc/api/Tile38Template.java +++ b/src/main/java/com/mapabc/api/Tile38Template.java @@ -33,6 +33,8 @@ public interface Tile38Template { public void aofShrink(); + public String delEntry(String key, String member); + public String intersects(String key, Element element); public String nearBy(String key, double lng, double lat, int length); diff --git a/src/main/java/com/mapabc/api/Tile38TemplateImpl.java b/src/main/java/com/mapabc/api/Tile38TemplateImpl.java index fe483a9..29a1916 100644 --- a/src/main/java/com/mapabc/api/Tile38TemplateImpl.java +++ b/src/main/java/com/mapabc/api/Tile38TemplateImpl.java @@ -103,6 +103,14 @@ public void aofShrink() { commands.aofShrink(); } + @Override + public String delEntry(String key, String member) { + if (StringUtil.isBlack(key) || StringUtil.isBlack(member)) { + return "key is not null"; + } + return commands.delEntry(key,member); + } + @Override public String intersects(String key, Element element) { if (StringUtil.isBlack(key)) { diff --git a/src/main/java/com/mapabc/client/Tile38Client.java b/src/main/java/com/mapabc/client/Tile38Client.java index a7287a5..ee36d61 100644 --- a/src/main/java/com/mapabc/client/Tile38Client.java +++ b/src/main/java/com/mapabc/client/Tile38Client.java @@ -28,17 +28,25 @@ public class Tile38Client implements Serializable { private RedisClient client = null; private StatefulRedisConnection connect = null; - public Tile38Client() { client = this.createRedisClient("127.0.0.1", 9851); commands = this.createCommands(client, ""); } public Tile38Client(String host, int port, String passWord) { - client = this.createRedisClient(host, port); + if (passWord != null){ + client = this.createRedisClient(host, port,passWord); + } else { + client = this.createRedisClient(host, port); + } commands = this.createCommands(client, passWord); } + public Tile38Client(String sentinelHost, int sentinelPort, String password , String masterId) { + client = this.createRedisClient(sentinelHost , sentinelPort , password , masterId); + commands = this.createCommands(client, password); + } + public void close() { if (connect != null) { try { @@ -79,5 +87,17 @@ private Tile38Commands createCommands(RedisClient client, String passWord) { private RedisClient createRedisClient(String host, int port) { return RedisClient.create(RedisURI.create(host, port)); } + + private RedisClient createRedisClient(String host, int port, String passWord) { + RedisURI uri = RedisURI.Builder.redis(host, port).withPassword(passWord.toCharArray()).build(); + RedisClient redisClient = RedisClient.create(uri); + redisClient.setOptions(ClientOptions.builder().protocolVersion(ProtocolVersion.RESP2).build()); + return redisClient; + } + + private RedisClient createRedisClient(String sentinelHost, int sentinelPort, String password , String masterId) { + RedisURI redisURI = RedisURI.Builder.sentinel(sentinelHost, sentinelPort, masterId, password).withDatabase(0).build(); + return RedisClient.create(redisURI); + } } diff --git a/src/main/java/com/mapabc/commands/BatchedCommandType.java b/src/main/java/com/mapabc/commands/BatchedCommandType.java index f153cf4..3586f3a 100644 --- a/src/main/java/com/mapabc/commands/BatchedCommandType.java +++ b/src/main/java/com/mapabc/commands/BatchedCommandType.java @@ -221,7 +221,7 @@ public enum BatchedCommandType implements ProtocolKeyword { NEARBY, WITHIN, INTERSECTS, - + SETHOOK, CLUSTER; public final byte[] bytes; diff --git a/src/main/java/com/mapabc/commands/Tile38Commands.java b/src/main/java/com/mapabc/commands/Tile38Commands.java index c4f58de..22730e0 100644 --- a/src/main/java/com/mapabc/commands/Tile38Commands.java +++ b/src/main/java/com/mapabc/commands/Tile38Commands.java @@ -66,6 +66,8 @@ public interface Tile38Commands extends Commands { @Command("AOFSHRINK") void aofShrink(); + @Command("DEL ?0 ?1") + String delEntry(String key,String member); /****************************************************** ** 查询 ** @@ -287,7 +289,7 @@ public interface Tile38Commands extends Commands { String setElementWithField(String key, String id, String geojson , String fieldKeyName , String fieldValue); - @Command("SET ?0 ?1 OBJECT ?2 FIELD ?3 ?4 ?5 ?6") + @Command("SET ?0 ?1 OBJECT ?2 FIELD ?3 ?4 FIELD ?5 ?6") String setElementWithFields(String key, String id, String geojson , String field1KeyName , String field1Value , String field2KeyName , String field2Value); /** diff --git a/src/main/java/com/mapabc/entity/Element.java b/src/main/java/com/mapabc/entity/Element.java index 2a93a4f..0c22c3d 100644 --- a/src/main/java/com/mapabc/entity/Element.java +++ b/src/main/java/com/mapabc/entity/Element.java @@ -1,5 +1,7 @@ package com.mapabc.entity; +import io.lettuce.core.protocol.CommandArgs; + import java.io.Serializable; /** @@ -7,4 +9,7 @@ * @Date 2019/11/14 15:33 **/ public class Element implements Serializable { + public CommandArgs getCommandArgs(String key, String member){ + return null; + } } diff --git a/src/main/java/com/mapabc/entity/Fence.java b/src/main/java/com/mapabc/entity/Fence.java index e211f45..574b6f0 100644 --- a/src/main/java/com/mapabc/entity/Fence.java +++ b/src/main/java/com/mapabc/entity/Fence.java @@ -1,6 +1,8 @@ package com.mapabc.entity; import com.alibaba.fastjson.JSONObject; +import io.lettuce.core.codec.StringCodec; +import io.lettuce.core.protocol.CommandArgs; import java.io.Serializable; @@ -12,6 +14,12 @@ public class Fence extends Element implements Serializable { private JSONObject fence; + @Override + public CommandArgs getCommandArgs(String key, String member) { + String geojson = JSONObject.toJSONString(fence); + return new CommandArgs<>(StringCodec.UTF8).add(key).add(member).add("OBJECT").add(geojson); + } + public Fence() {} public Fence(JSONObject fence) { diff --git a/src/main/java/com/mapabc/entity/Rectangle.java b/src/main/java/com/mapabc/entity/Rectangle.java index e0b3e98..4ec09c5 100644 --- a/src/main/java/com/mapabc/entity/Rectangle.java +++ b/src/main/java/com/mapabc/entity/Rectangle.java @@ -1,6 +1,10 @@ package com.mapabc.entity; +import com.alibaba.fastjson.JSONObject; +import io.lettuce.core.codec.StringCodec; +import io.lettuce.core.protocol.CommandArgs; + import java.io.Serializable; /** @@ -12,6 +16,15 @@ public class Rectangle extends Element implements Serializable { private Point leftDown; private Point rightUpper; + @Override + public CommandArgs getCommandArgs(String key, String member) { + double lng1 = leftDown.getLng(); + double lat1 = leftDown.getLat(); + double lng2 = rightUpper.getLng(); + double lat2 = rightUpper.getLat(); + return new CommandArgs<>(StringCodec.UTF8).add(key).add(member).add("BOUNDS").add(lng1).add(lat1).add(lng2).add(lat2); + } + public Rectangle() {} public Rectangle(Point leftDown, Point rightUpper) {