diff --git a/README.md b/README.md index 149d796..b373c21 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,81 @@ # redis2asp High-performance Aerospike proxy for the Redis protocol +### Performance Test Report +aerospike 3.x 2c4g redispike-proxy 2c4g: + +`./redis-benchmark -h xxxx -p 6379 -n 2000000 -c 200 -t get` +``` +WARNING: Could not fetch server CONFIG +====== GET ====== +2000000 requests completed in 44.94 seconds +200 parallel clients +3 bytes payload +keep alive: 1 +multi-thread: no + +Latency by percentile distribution: +0.000% <= 1.975 milliseconds (cumulative count 1) +50.000% <= 3.879 milliseconds (cumulative count 1001535) +75.000% <= 4.919 milliseconds (cumulative count 1501029) +87.500% <= 5.999 milliseconds (cumulative count 1750484) +93.750% <= 7.247 milliseconds (cumulative count 1875200) +96.875% <= 8.599 milliseconds (cumulative count 1937780) +98.438% <= 10.071 milliseconds (cumulative count 1968821) +99.219% <= 12.023 milliseconds (cumulative count 1984401) +99.609% <= 13.967 milliseconds (cumulative count 1992202) +99.805% <= 16.071 milliseconds (cumulative count 1996100) +99.902% <= 19.199 milliseconds (cumulative count 1998053) +99.951% <= 22.271 milliseconds (cumulative count 1999027) +99.976% <= 24.847 milliseconds (cumulative count 1999515) +99.988% <= 26.831 milliseconds (cumulative count 1999756) +99.994% <= 30.527 milliseconds (cumulative count 1999879) +99.997% <= 31.231 milliseconds (cumulative count 1999942) +99.998% <= 31.535 milliseconds (cumulative count 1999971) +99.999% <= 31.663 milliseconds (cumulative count 1999988) +100.000% <= 31.743 milliseconds (cumulative count 1999993) +100.000% <= 31.807 milliseconds (cumulative count 1999997) +100.000% <= 31.871 milliseconds (cumulative count 1999999) +100.000% <= 31.919 milliseconds (cumulative count 2000000) +100.000% <= 31.919 milliseconds (cumulative count 2000000) + +Cumulative distribution of latencies: +0.000% <= 0.103 milliseconds (cumulative count 0) +0.001% <= 2.007 milliseconds (cumulative count 10) +0.051% <= 2.103 milliseconds (cumulative count 1012) +22.646% <= 3.103 milliseconds (cumulative count 452915) +56.697% <= 4.103 milliseconds (cumulative count 1133935) +78.001% <= 5.103 milliseconds (cumulative count 1560018) +88.276% <= 6.103 milliseconds (cumulative count 1765529) +93.275% <= 7.103 milliseconds (cumulative count 1865499) +95.983% <= 8.103 milliseconds (cumulative count 1919661) +97.593% <= 9.103 milliseconds (cumulative count 1951867) +98.460% <= 10.103 milliseconds (cumulative count 1969205) +98.949% <= 11.103 milliseconds (cumulative count 1978987) +99.238% <= 12.103 milliseconds (cumulative count 1984763) +99.451% <= 13.103 milliseconds (cumulative count 1989027) +99.629% <= 14.103 milliseconds (cumulative count 1992578) +99.732% <= 15.103 milliseconds (cumulative count 1994648) +99.808% <= 16.103 milliseconds (cumulative count 1996153) +99.853% <= 17.103 milliseconds (cumulative count 1997051) +99.878% <= 18.111 milliseconds (cumulative count 1997563) +99.899% <= 19.103 milliseconds (cumulative count 1997985) +99.918% <= 20.111 milliseconds (cumulative count 1998363) +99.936% <= 21.103 milliseconds (cumulative count 1998710) +99.949% <= 22.111 milliseconds (cumulative count 1998981) +99.962% <= 23.103 milliseconds (cumulative count 1999237) +99.969% <= 24.111 milliseconds (cumulative count 1999375) +99.979% <= 25.103 milliseconds (cumulative count 1999573) +99.984% <= 26.111 milliseconds (cumulative count 1999674) +99.990% <= 27.103 milliseconds (cumulative count 1999795) +99.991% <= 28.111 milliseconds (cumulative count 1999828) +99.993% <= 29.103 milliseconds (cumulative count 1999854) +99.993% <= 30.111 milliseconds (cumulative count 1999862) +99.997% <= 31.103 milliseconds (cumulative count 1999932) +100.000% <= 32.111 milliseconds (cumulative count 2000000) + +Summary: +throughput summary: 44501.80 requests per second +latency summary (msec): +avg min p50 p95 p99 max +4.337 1.968 3.879 7.679 11.255 31.919 +``` \ No newline at end of file diff --git a/pom.xml b/pom.xml index 21976a7..cbc3a3a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,11 +4,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.example - redis2asp + icu.funkye + redispike-proxy 1.0-SNAPSHOT + icu.funkye.redispike.ProxyMain 1.8 1.8 UTF-8 @@ -19,6 +20,7 @@ 1.2.9 1.3.6 3.8 + 7.2.1 @@ -39,7 +41,7 @@ com.aerospike aerospike-client - 7.2.1 + ${asp-client.version} commons-cli @@ -69,12 +71,38 @@ + ${artifactId} org.apache.maven.plugins maven-surefire-plugin 2.22.0 + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + + ${start-class} + + + + jar-with-dependencies + + false + + + + make-assembly + package + + single + + + + org.apache.maven.plugins maven-compiler-plugin diff --git a/src/main/java/org/redis2asp/ProxyMain.java b/src/main/java/icu/funkye/redispike/ProxyMain.java similarity index 97% rename from src/main/java/org/redis2asp/ProxyMain.java rename to src/main/java/icu/funkye/redispike/ProxyMain.java index 15f62ae..554b10b 100644 --- a/src/main/java/org/redis2asp/ProxyMain.java +++ b/src/main/java/icu/funkye/redispike/ProxyMain.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp; +package icu.funkye.redispike; import org.apache.commons.cli.ParseException; diff --git a/src/main/java/org/redis2asp/Server.java b/src/main/java/icu/funkye/redispike/Server.java similarity index 80% rename from src/main/java/org/redis2asp/Server.java rename to src/main/java/icu/funkye/redispike/Server.java index 134c90f..bc506a0 100644 --- a/src/main/java/org/redis2asp/Server.java +++ b/src/main/java/icu/funkye/redispike/Server.java @@ -14,8 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp; +package icu.funkye.redispike; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.Optional; import com.aerospike.client.Host; import com.aerospike.client.policy.ClientPolicy; import com.alipay.remoting.ConnectionEventType; @@ -23,13 +26,14 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; -import org.redis2asp.common.BoltServer; -import org.redis2asp.common.CONNECTEventProcessor; -import org.redis2asp.common.DISCONNECTEventProcessor; -import org.redis2asp.factory.AeroSpikeClientFactory; -import org.redis2asp.protocol.RedisProtocol; +import icu.funkye.redispike.common.BoltServer; +import icu.funkye.redispike.common.CONNECTEventProcessor; +import icu.funkye.redispike.common.DISCONNECTEventProcessor; +import icu.funkye.redispike.factory.AeroSpikeClientFactory; +import icu.funkye.redispike.protocol.RedisProtocol; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,8 +65,14 @@ public void start(String... args) throws ParseException { + "for single record and batch commands."); options.addOption("s", "set", true, "Set name. Use 'empty' for empty set (default: demoset)"); options.addOption("n", "namespace", true, "Namespace (default: test)"); + options.addOption("u", "help", false, "Print usage."); + CommandLineParser parser = new DefaultParser(); CommandLine cl = parser.parse(options, args, false); + if (cl.hasOption("u")) { + logUsage(options); + throw new RuntimeException("Terminate after displaying usage"); + } port = Integer.parseInt(cl.getOptionValue("p", "6379")); String host = cl.getOptionValue("th", "127.0.0.1"); int targetPort = Integer.parseInt(cl.getOptionValue("tp", "3000")); @@ -86,8 +96,16 @@ public void start(String... args) throws ParseException { } } - public void shutdown() { - server.stop(); + private void logUsage(Options options) { + HelpFormatter formatter = new HelpFormatter(); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + String syntax = "java -jar redispike-proxy.jar -options"; + formatter.printHelp(pw, 100, syntax, "options:", options, 0, 2, null); + System.out.println(sw); } + public void shutdown() { + Optional.ofNullable(server).ifPresent(BoltServer::stop); + } } diff --git a/src/main/java/org/redis2asp/common/BoltServer.java b/src/main/java/icu/funkye/redispike/common/BoltServer.java similarity index 98% rename from src/main/java/org/redis2asp/common/BoltServer.java rename to src/main/java/icu/funkye/redispike/common/BoltServer.java index ba25a0e..52fd8ac 100644 --- a/src/main/java/org/redis2asp/common/BoltServer.java +++ b/src/main/java/icu/funkye/redispike/common/BoltServer.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.common; +package icu.funkye.redispike.common; import com.alipay.remoting.ConnectionEventProcessor; import com.alipay.remoting.ConnectionEventType; diff --git a/src/main/java/org/redis2asp/common/CONNECTEventProcessor.java b/src/main/java/icu/funkye/redispike/common/CONNECTEventProcessor.java similarity index 98% rename from src/main/java/org/redis2asp/common/CONNECTEventProcessor.java rename to src/main/java/icu/funkye/redispike/common/CONNECTEventProcessor.java index c1737a7..64c936c 100644 --- a/src/main/java/org/redis2asp/common/CONNECTEventProcessor.java +++ b/src/main/java/icu/funkye/redispike/common/CONNECTEventProcessor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.common; +package icu.funkye.redispike.common; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicBoolean; diff --git a/src/main/java/org/redis2asp/common/DISCONNECTEventProcessor.java b/src/main/java/icu/funkye/redispike/common/DISCONNECTEventProcessor.java similarity index 98% rename from src/main/java/org/redis2asp/common/DISCONNECTEventProcessor.java rename to src/main/java/icu/funkye/redispike/common/DISCONNECTEventProcessor.java index 71eeaae..00991c6 100644 --- a/src/main/java/org/redis2asp/common/DISCONNECTEventProcessor.java +++ b/src/main/java/icu/funkye/redispike/common/DISCONNECTEventProcessor.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.common; +package icu.funkye.redispike.common; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; diff --git a/src/main/java/org/redis2asp/factory/AeroSpikeClientFactory.java b/src/main/java/icu/funkye/redispike/factory/AeroSpikeClientFactory.java similarity index 96% rename from src/main/java/org/redis2asp/factory/AeroSpikeClientFactory.java rename to src/main/java/icu/funkye/redispike/factory/AeroSpikeClientFactory.java index 6bee1f8..93ee11a 100644 --- a/src/main/java/org/redis2asp/factory/AeroSpikeClientFactory.java +++ b/src/main/java/icu/funkye/redispike/factory/AeroSpikeClientFactory.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.factory; +package icu.funkye.redispike.factory; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; @@ -61,6 +61,7 @@ public static void createInstance(ClientPolicy clientPolicy, Host... hosts) { LOCK.lock(); try { if (client == null) { + clientPolicy.maxConnsPerNode = 65535; clientPolicy.eventLoops = eventLoops; client = new AerospikeClient(clientPolicy, hosts); } diff --git a/src/main/java/org/redis2asp/protocol/RedisCommandDecoder.java b/src/main/java/icu/funkye/redispike/protocol/RedisCommandDecoder.java similarity index 92% rename from src/main/java/org/redis2asp/protocol/RedisCommandDecoder.java rename to src/main/java/icu/funkye/redispike/protocol/RedisCommandDecoder.java index ddbb464..c37e3e0 100644 --- a/src/main/java/org/redis2asp/protocol/RedisCommandDecoder.java +++ b/src/main/java/icu/funkye/redispike/protocol/RedisCommandDecoder.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol; +package icu.funkye.redispike.protocol; import java.nio.charset.StandardCharsets; import java.util.ArrayList; @@ -23,10 +23,10 @@ import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.DecoderException; -import org.redis2asp.protocol.request.CommandRequest; -import org.redis2asp.protocol.request.DelRequest; -import org.redis2asp.protocol.request.GetRequest; -import org.redis2asp.protocol.request.SetRequest; +import icu.funkye.redispike.protocol.request.CommandRequest; +import icu.funkye.redispike.protocol.request.DelRequest; +import icu.funkye.redispike.protocol.request.GetRequest; +import icu.funkye.redispike.protocol.request.SetRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,7 +53,9 @@ public void decode(ChannelHandlerContext ctx, ByteBuf in, List out) { private RedisRequest convert2RedisRequest(List params) { String cmd = params.get(0); - LOGGER.info("cmd: {}", params); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("cmd: {}", params); + } switch (cmd) { case "get": return new GetRequest(params.get(1)); diff --git a/src/main/java/org/redis2asp/protocol/RedisCommandEncoder.java b/src/main/java/icu/funkye/redispike/protocol/RedisCommandEncoder.java similarity index 94% rename from src/main/java/org/redis2asp/protocol/RedisCommandEncoder.java rename to src/main/java/icu/funkye/redispike/protocol/RedisCommandEncoder.java index ff9dc69..74f5a52 100644 --- a/src/main/java/org/redis2asp/protocol/RedisCommandEncoder.java +++ b/src/main/java/icu/funkye/redispike/protocol/RedisCommandEncoder.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol; +package icu.funkye.redispike.protocol; import java.io.Serializable; import com.alipay.remoting.CommandEncoder; @@ -29,7 +29,6 @@ public class RedisCommandEncoder implements CommandEncoder { @Override public void encode(ChannelHandlerContext ctx, Serializable msg, ByteBuf out) throws Exception { - logger.info("RedisCommandEncoder encode"); if (msg instanceof RedisResponse) { RedisResponse redisResponse = (RedisResponse) msg; if (logger.isDebugEnabled()) { diff --git a/src/main/java/org/redis2asp/protocol/RedisCommandHandler.java b/src/main/java/icu/funkye/redispike/protocol/RedisCommandHandler.java similarity index 79% rename from src/main/java/org/redis2asp/protocol/RedisCommandHandler.java rename to src/main/java/icu/funkye/redispike/protocol/RedisCommandHandler.java index 4740e86..d48c3b5 100644 --- a/src/main/java/org/redis2asp/protocol/RedisCommandHandler.java +++ b/src/main/java/icu/funkye/redispike/protocol/RedisCommandHandler.java @@ -14,19 +14,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol; +package icu.funkye.redispike.protocol; import java.nio.charset.StandardCharsets; import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import com.aerospike.client.AerospikeException; -import com.aerospike.client.BatchRecord; import com.aerospike.client.Bin; import com.aerospike.client.IAerospikeClient; import com.aerospike.client.Key; import com.aerospike.client.Record; -import com.aerospike.client.listener.BatchRecordArrayListener; import com.aerospike.client.listener.DeleteListener; import com.aerospike.client.listener.RecordListener; import com.aerospike.client.listener.WriteListener; @@ -37,11 +39,11 @@ import com.alipay.remoting.RemotingContext; import com.alipay.remoting.RemotingProcessor; import com.alipay.sofa.common.profile.StringUtil; -import org.redis2asp.factory.AeroSpikeClientFactory; -import org.redis2asp.protocol.request.CommandRequest; -import org.redis2asp.protocol.request.DelRequest; -import org.redis2asp.protocol.request.GetRequest; -import org.redis2asp.protocol.request.SetRequest; +import icu.funkye.redispike.factory.AeroSpikeClientFactory; +import icu.funkye.redispike.protocol.request.CommandRequest; +import icu.funkye.redispike.protocol.request.DelRequest; +import icu.funkye.redispike.protocol.request.GetRequest; +import icu.funkye.redispike.protocol.request.SetRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,11 +57,13 @@ public class RedisCommandHandler implements CommandHandler { public void handleCommand(RemotingContext ctx, Object msg) { if (msg instanceof RedisRequest) { RedisRequest redisRequest = (RedisRequest) msg; - logger.info("redisRequest:{}", redisRequest); + if(logger.isDebugEnabled()){ + logger.debug("redisRequest:{}", redisRequest); + } if (redisRequest instanceof GetRequest) { GetRequest getRequest = (GetRequest) redisRequest; Key key = new Key(AeroSpikeClientFactory.namespace, AeroSpikeClientFactory.set, getRequest.getKey()); - client.get(null, new RecordListener() { + client.get(AeroSpikeClientFactory.eventLoops.next(), new RecordListener() { @Override public void onSuccess(Key key, Record record) { if (record == null) { @@ -101,13 +105,13 @@ public void onFailure(AerospikeException ae) { writePolicy.recordExistsAction = RecordExistsAction.CREATE_ONLY; } if (setRequest.getOperate() == SetRequest.Operate.XX) { - client.get(null, new RecordListener() { + client.get(AeroSpikeClientFactory.eventLoops.next(), new RecordListener() { @Override public void onSuccess(Key key, Record record) { if (record == null) { ctx.writeAndFlush(redisRequest.getResponse()); } else { - client.put(null, new WriteListener() { + client.put(AeroSpikeClientFactory.eventLoops.next(), new WriteListener() { @Override public void onSuccess(Key key) { setRequest.setResponse("OK".getBytes(StandardCharsets.UTF_8)); @@ -135,7 +139,7 @@ public void onFailure(AerospikeException ae) { if (writePolicy == null) { writePolicy = client.getWritePolicyDefault(); } - client.put(null, new WriteListener() { + client.put(AeroSpikeClientFactory.eventLoops.next(), new WriteListener() { @Override public void onSuccess(Key key) { if (setRequest.getOriginalCommand().contains("nx")) { @@ -163,21 +167,31 @@ public void onFailure(AerospikeException ae) { List keys = delRequest.getKey(); List list = keys.stream().map(key->new Key(AeroSpikeClientFactory.namespace, AeroSpikeClientFactory.set, key)).collect( Collectors.toList()); - client.delete(null, new BatchRecordArrayListener() { - @Override - public void onSuccess(BatchRecord[] records, boolean status) { - if(records!=null&&records.length>0) { - delRequest.setResponse(String.valueOf(records.length).getBytes(StandardCharsets.UTF_8)); + CountDownLatch countDownLatch = new CountDownLatch(list.size()); + for (Key key : list) { + client.delete(AeroSpikeClientFactory.eventLoops.next(), new DeleteListener() { + @Override + public void onSuccess(Key key, boolean b) { + delRequest.setResponse( + String.valueOf(delRequest.getCount().incrementAndGet()).getBytes(StandardCharsets.UTF_8)); + countDownLatch.countDown(); } - ctx.writeAndFlush(delRequest.getResponse()); - } - @Override - public void onFailure(BatchRecord[] records, AerospikeException ae) { - logger.error(ae.getMessage(), ae); + @Override + public void onFailure(AerospikeException e) { + countDownLatch.countDown(); + } + }, client.getWritePolicyDefault(), key); + } + CompletableFuture.runAsync(() -> { + try { + countDownLatch.await(10, TimeUnit.SECONDS); + ctx.writeAndFlush(delRequest.getResponse()); + } catch (InterruptedException e) { + logger.error(e.getMessage(), e); ctx.writeAndFlush(delRequest.getResponse()); } - }, client.getBatchPolicyDefault(), client.getBatchDeletePolicyDefault(), list.toArray(new Key[0])); + }); } } } diff --git a/src/main/java/org/redis2asp/protocol/RedisProtocol.java b/src/main/java/icu/funkye/redispike/protocol/RedisProtocol.java similarity index 97% rename from src/main/java/org/redis2asp/protocol/RedisProtocol.java rename to src/main/java/icu/funkye/redispike/protocol/RedisProtocol.java index 8c88214..5a27af3 100644 --- a/src/main/java/org/redis2asp/protocol/RedisProtocol.java +++ b/src/main/java/icu/funkye/redispike/protocol/RedisProtocol.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol; +package icu.funkye.redispike.protocol; import com.alipay.remoting.CommandDecoder; import com.alipay.remoting.CommandEncoder; diff --git a/src/main/java/org/redis2asp/protocol/RedisRequest.java b/src/main/java/icu/funkye/redispike/protocol/RedisRequest.java similarity index 95% rename from src/main/java/org/redis2asp/protocol/RedisRequest.java rename to src/main/java/icu/funkye/redispike/protocol/RedisRequest.java index 53df565..9f6d275 100644 --- a/src/main/java/org/redis2asp/protocol/RedisRequest.java +++ b/src/main/java/icu/funkye/redispike/protocol/RedisRequest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol; +package icu.funkye.redispike.protocol; public interface RedisRequest { diff --git a/src/main/java/org/redis2asp/protocol/RedisResponse.java b/src/main/java/icu/funkye/redispike/protocol/RedisResponse.java similarity index 98% rename from src/main/java/org/redis2asp/protocol/RedisResponse.java rename to src/main/java/icu/funkye/redispike/protocol/RedisResponse.java index e0929f8..fd3a72b 100644 --- a/src/main/java/org/redis2asp/protocol/RedisResponse.java +++ b/src/main/java/icu/funkye/redispike/protocol/RedisResponse.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol; +package icu.funkye.redispike.protocol; import java.io.IOException; import java.util.concurrent.atomic.AtomicInteger; diff --git a/src/main/java/org/redis2asp/protocol/request/CommandRequest.java b/src/main/java/icu/funkye/redispike/protocol/request/CommandRequest.java similarity index 85% rename from src/main/java/org/redis2asp/protocol/request/CommandRequest.java rename to src/main/java/icu/funkye/redispike/protocol/request/CommandRequest.java index 33d58c7..dc54fc7 100644 --- a/src/main/java/org/redis2asp/protocol/request/CommandRequest.java +++ b/src/main/java/icu/funkye/redispike/protocol/request/CommandRequest.java @@ -14,11 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol.request; +package icu.funkye.redispike.protocol.request; -import org.redis2asp.protocol.RedisRequest; -import org.redis2asp.protocol.RedisResponse; -import org.redis2asp.protocol.response.BulkResponse; +import icu.funkye.redispike.protocol.RedisRequest; +import icu.funkye.redispike.protocol.RedisResponse; +import icu.funkye.redispike.protocol.response.BulkResponse; public class CommandRequest implements RedisRequest { diff --git a/src/main/java/org/redis2asp/protocol/request/DelRequest.java b/src/main/java/icu/funkye/redispike/protocol/request/DelRequest.java similarity index 78% rename from src/main/java/org/redis2asp/protocol/request/DelRequest.java rename to src/main/java/icu/funkye/redispike/protocol/request/DelRequest.java index 5e30b1d..2bbade5 100644 --- a/src/main/java/org/redis2asp/protocol/request/DelRequest.java +++ b/src/main/java/icu/funkye/redispike/protocol/request/DelRequest.java @@ -14,17 +14,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol.request; +package icu.funkye.redispike.protocol.request; import java.util.List; -import org.redis2asp.protocol.RedisRequest; -import org.redis2asp.protocol.RedisResponse; -import org.redis2asp.protocol.response.IntegerResponse; +import java.util.concurrent.atomic.AtomicInteger; +import icu.funkye.redispike.protocol.RedisRequest; +import icu.funkye.redispike.protocol.RedisResponse; +import icu.funkye.redispike.protocol.response.IntegerResponse; public class DelRequest implements RedisRequest { List key; + AtomicInteger count = new AtomicInteger(0); + IntegerResponse response = new IntegerResponse(); public DelRequest(List key) { @@ -40,6 +43,10 @@ public void setResponse(byte[] data) { this.response.setData(data); } + public AtomicInteger getCount() { + return count; + } + @Override public RedisResponse getResponse() { return response; diff --git a/src/main/java/org/redis2asp/protocol/request/GetRequest.java b/src/main/java/icu/funkye/redispike/protocol/request/GetRequest.java similarity index 86% rename from src/main/java/org/redis2asp/protocol/request/GetRequest.java rename to src/main/java/icu/funkye/redispike/protocol/request/GetRequest.java index 3ccd6b0..7e82588 100644 --- a/src/main/java/org/redis2asp/protocol/request/GetRequest.java +++ b/src/main/java/icu/funkye/redispike/protocol/request/GetRequest.java @@ -14,11 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol.request; +package icu.funkye.redispike.protocol.request; -import org.redis2asp.protocol.RedisRequest; -import org.redis2asp.protocol.RedisResponse; -import org.redis2asp.protocol.response.BulkResponse; +import icu.funkye.redispike.protocol.RedisRequest; +import icu.funkye.redispike.protocol.RedisResponse; +import icu.funkye.redispike.protocol.response.BulkResponse; public class GetRequest implements RedisRequest { diff --git a/src/main/java/org/redis2asp/protocol/request/SetRequest.java b/src/main/java/icu/funkye/redispike/protocol/request/SetRequest.java similarity index 92% rename from src/main/java/org/redis2asp/protocol/request/SetRequest.java rename to src/main/java/icu/funkye/redispike/protocol/request/SetRequest.java index f4c61ac..92d2fb6 100644 --- a/src/main/java/org/redis2asp/protocol/request/SetRequest.java +++ b/src/main/java/icu/funkye/redispike/protocol/request/SetRequest.java @@ -14,14 +14,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol.request; +package icu.funkye.redispike.protocol.request; import java.nio.charset.StandardCharsets; import java.util.List; -import org.redis2asp.protocol.RedisRequest; -import org.redis2asp.protocol.RedisResponse; -import org.redis2asp.protocol.response.BulkResponse; -import org.redis2asp.protocol.response.IntegerResponse; +import icu.funkye.redispike.protocol.RedisRequest; +import icu.funkye.redispike.protocol.RedisResponse; +import icu.funkye.redispike.protocol.response.BulkResponse; +import icu.funkye.redispike.protocol.response.IntegerResponse; public class SetRequest implements RedisRequest { diff --git a/src/main/java/org/redis2asp/protocol/response/BulkResponse.java b/src/main/java/icu/funkye/redispike/protocol/response/BulkResponse.java similarity index 95% rename from src/main/java/org/redis2asp/protocol/response/BulkResponse.java rename to src/main/java/icu/funkye/redispike/protocol/response/BulkResponse.java index 70465f6..d367eea 100644 --- a/src/main/java/org/redis2asp/protocol/response/BulkResponse.java +++ b/src/main/java/icu/funkye/redispike/protocol/response/BulkResponse.java @@ -14,12 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol.response; +package icu.funkye.redispike.protocol.response; import java.io.IOException; import java.util.Arrays; import io.netty.buffer.ByteBuf; -import org.redis2asp.protocol.RedisResponse; +import icu.funkye.redispike.protocol.RedisResponse; public class BulkResponse implements RedisResponse { diff --git a/src/main/java/org/redis2asp/protocol/response/IntegerResponse.java b/src/main/java/icu/funkye/redispike/protocol/response/IntegerResponse.java similarity index 94% rename from src/main/java/org/redis2asp/protocol/response/IntegerResponse.java rename to src/main/java/icu/funkye/redispike/protocol/response/IntegerResponse.java index 7e2196b..75615e0 100644 --- a/src/main/java/org/redis2asp/protocol/response/IntegerResponse.java +++ b/src/main/java/icu/funkye/redispike/protocol/response/IntegerResponse.java @@ -14,12 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp.protocol.response; +package icu.funkye.redispike.protocol.response; import java.io.IOException; import java.nio.charset.StandardCharsets; import io.netty.buffer.ByteBuf; -import org.redis2asp.protocol.RedisResponse; +import icu.funkye.redispike.protocol.RedisResponse; public class IntegerResponse implements RedisResponse { diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index d341474..fe8fd89 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -20,7 +20,7 @@ + value="${user.home}/logs/redispike-proxy"/> @@ -33,10 +33,10 @@ - ${LOG_FILE_PATH}/${APPLICATION_NAME:-redis2asp}redis2asp.all.log + ${LOG_FILE_PATH}/${APPLICATION_NAME:-redispike-proxy}redispike-proxy.all.log true - ${LOG_FILE_PATH}/history/${APPLICATION_NAME:-redis2asp}redis2asp.all.%d{yyyy-MM-dd}.%i.log.gz + ${LOG_FILE_PATH}/history/${APPLICATION_NAME:-redispike-proxy}redispike-proxy.all.%d{yyyy-MM-dd}.%i.log.gz 2GB 7 7GB @@ -55,10 +55,10 @@ ACCEPT DENY - ${LOG_FILE_PATH}/${APPLICATION_NAME:-redis2asp}redis2asp.warn.log + ${LOG_FILE_PATH}/${APPLICATION_NAME:-redispike-proxy}redispike-proxy.warn.log true - ${LOG_FILE_PATH}/history/${APPLICATION_NAME:-redis2asp}redis2asp.warn.%d{yyyy-MM-dd}.%i.log.gz + ${LOG_FILE_PATH}/history/${APPLICATION_NAME:-redispike-proxy}redispike-proxy.warn.%d{yyyy-MM-dd}.%i.log.gz 2GB 7 7GB @@ -77,10 +77,10 @@ ACCEPT DENY - ${LOG_FILE_PATH}/${APPLICATION_NAME:-redis2asp}redis2asp.error.log + ${LOG_FILE_PATH}/${APPLICATION_NAME:-redispike-proxy}redispike-proxy.error.log true - ${LOG_FILE_PATH}/history/${APPLICATION_NAME:-redis2asp}redis2asp.error.%d{yyyy-MM-dd}.%i.log.gz + ${LOG_FILE_PATH}/history/${APPLICATION_NAME:-redispike-proxy}redispike-proxy.error.%d{yyyy-MM-dd}.%i.log.gz 2GB 7 7GB diff --git a/src/test/java/org/redis2asp/ServerTest.java b/src/test/java/icu/funkye/redispike/ServerTest.java similarity index 97% rename from src/test/java/org/redis2asp/ServerTest.java rename to src/test/java/icu/funkye/redispike/ServerTest.java index 886eb93..c64b463 100644 --- a/src/test/java/org/redis2asp/ServerTest.java +++ b/src/test/java/icu/funkye/redispike/ServerTest.java @@ -14,9 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.redis2asp; +package icu.funkye.redispike; -import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -30,7 +29,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.redis2asp.factory.AeroSpikeClientFactory; +import icu.funkye.redispike.factory.AeroSpikeClientFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; @@ -43,7 +42,7 @@ public class ServerTest { static Logger logger = LoggerFactory.getLogger(ServerTest.class); @BeforeAll - public static void init() throws IOException, ParseException { + public static void init() throws ParseException { server = new Server(); server.start("-p6789"); aspClient = AeroSpikeClientFactory.getClient();