@@ -45,7 +45,19 @@ public class SetCommand extends Command {
4545 private static final BulkStrings CONSTANTS_EX = BulkStrings .of ("EX" );
4646 private static final BulkStrings CONSTANTS_PX = BulkStrings .of ("PX" );
4747 private static final BulkStrings CONSTANTS_PXAT = BulkStrings .of ("PXAT" );
48- private static final byte [] HEADER = new byte []{RESP .RESP_DATA_TYPE_ARRAY , '3' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' , 'S' , 'E' , 'T' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK };
48+ // private static final byte[] HEADER = new byte[]{RESP.RESP_DATA_TYPE_ARRAY, '3', '\r', '\n', RESP.RESP_DATA_TYPE_BULK, '3', '\r', '\n', 'S', 'E', 'T', '\r', '\n', RESP.RESP_DATA_TYPE_BULK};
49+ private static final byte [][] FAST_HEADER = new byte [][]{
50+ {RESP .RESP_DATA_TYPE_ARRAY , '3' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' , 'S' , 'E' , 'T' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '0' , '\r' , '\n' },
51+ {RESP .RESP_DATA_TYPE_ARRAY , '3' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' , 'S' , 'E' , 'T' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '1' , '\r' , '\n' },
52+ {RESP .RESP_DATA_TYPE_ARRAY , '3' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' , 'S' , 'E' , 'T' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '2' , '\r' , '\n' },
53+ {RESP .RESP_DATA_TYPE_ARRAY , '3' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' , 'S' , 'E' , 'T' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' },
54+ {RESP .RESP_DATA_TYPE_ARRAY , '3' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' , 'S' , 'E' , 'T' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '4' , '\r' , '\n' },
55+ {RESP .RESP_DATA_TYPE_ARRAY , '3' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' , 'S' , 'E' , 'T' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '5' , '\r' , '\n' },
56+ {RESP .RESP_DATA_TYPE_ARRAY , '3' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' , 'S' , 'E' , 'T' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '6' , '\r' , '\n' },
57+ {RESP .RESP_DATA_TYPE_ARRAY , '3' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' , 'S' , 'E' , 'T' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '7' , '\r' , '\n' },
58+ {RESP .RESP_DATA_TYPE_ARRAY , '3' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' , 'S' , 'E' , 'T' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '8' , '\r' , '\n' },
59+ {RESP .RESP_DATA_TYPE_ARRAY , '3' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '3' , '\r' , '\n' , 'S' , 'E' , 'T' , '\r' , '\n' , RESP .RESP_DATA_TYPE_BULK , '9' , '\r' , '\n' },
60+ };
4961 private static final byte [] PART = new byte []{'\r' , '\n' , RESP .RESP_DATA_TYPE_BULK };
5062 // 要设置的键
5163 private final String key ;
@@ -102,8 +114,15 @@ public void writeTo(WriteBuffer writeBuffer) throws IOException {
102114 }
103115 byte [] keyBytes = key .getBytes ();
104116 byte [] valBytes = value .getBytes ();
105- writeBuffer .write (HEADER );
106- RESP .writeInt (writeBuffer , keyBytes .length );
117+ if (keyBytes .length < FAST_HEADER .length ) {
118+ writeBuffer .write (FAST_HEADER [keyBytes .length ]);
119+ } else {
120+ byte [] header = FAST_HEADER [0 ];
121+ writeBuffer .write (header , 0 , header .length - 3 );
122+ RESP .writeInt (writeBuffer , keyBytes .length );
123+ }
124+ // writeBuffer.write(HEADER);
125+ // RESP.writeInt(writeBuffer, keyBytes.length);
107126 writeBuffer .write (keyBytes );
108127 writeBuffer .write (PART );
109128 RESP .writeInt (writeBuffer , valBytes .length );
0 commit comments