I have been looking all over SO for a working solution but no luck :/
I want to perform the mass insertion using the pipelining feature of redis-cli but I am not able to do so.
I have a JAVA code snippet which create a file containing all the commands to run.
String add = "*4\r\n$4\r\nHSET\r\n$22\r\ndiscountProgramOffers\r\n$" +
key.getBytes().length + "\r\n" + key + "\r\n$" +
json.getBytes().length + "\r\n" + json + "\r\n";
System.out.println(add);
In the above code, I followed mass insertion link present at Redis Documentation site.
And this is a demo String which is getting created.
*4\r\n$4\r\nHSET\r\n$22\r\ndiscountProgramOffers\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n
When I run the file which is created by the snippet, sometimes I get nothing, and sometimes I get this error:
Error writing to the server: Connection reset by peer
EX:
echo -e "$(cat massInsert.txt)" | redis/src/redis-cli --pipe
Error writing to the server: Connection reset by peer
Am I doing something wrong?? Please help.
FYI: I referred to these questions:
Looks like a simple off-by-one error in creating the RESP protocol string:) There are 21, not 22 characters in the
discountProgramOffershash name.It worked for me (also with
printfinstead ofecho -e), but only in Alpine's shellash(see the other answer for details):