-
Notifications
You must be signed in to change notification settings - Fork 113
Expand file tree
/
Copy pathresp2_replies.json
More file actions
1736 lines (1736 loc) · 95.3 KB
/
resp2_replies.json
File metadata and controls
1736 lines (1736 loc) · 95.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"ACL": [],
"ACL CAT": [
"One of the following:",
"* [Array reply](../topics/protocol.md#arrays): an array of [Bulk string reply](../topics/protocol.md#bulk-strings) elements representing ACL categories or commands in a given category.",
"* [Simple error reply](../topics/protocol.md#simple-errors): the command returns an error if an invalid category name is given."
],
"ACL DELUSER": [
"[Integer reply](../topics/protocol.md#integers): the number of users that were deleted. This number will not always match the number of arguments since certain users may not exist."
],
"ACL DRYRUN": [
"Any of the following:",
"* [Simple string reply](../topics/protocol.md#simple-strings): `OK` on success.",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): an error describing why the user can't execute the command."
],
"ACL GENPASS": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): pseudorandom data. By default it contains 64 bytes, representing 256 bits of data. If `bits` was given, the output string length is the number of specified bits (rounded to the next multiple of 4) divided by 4."
],
"ACL GETUSER": [
"One of the following:",
"* [Array reply](../topics/protocol.md#arrays): a list of ACL rule definitions for the user.",
"* [Nil reply](../topics/protocol.md#bulk-strings): if user does not exist."
],
"ACL HELP": [
"[Array reply](../topics/protocol.md#arrays): a list of subcommands and their descriptions."
],
"ACL LIST": [
"[Array reply](../topics/protocol.md#arrays): an array of [Bulk string reply](../topics/protocol.md#bulk-strings) elements."
],
"ACL LOAD": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` on success.",
"",
"The command may fail with an error for several reasons: if the file is not readable, if there is an error inside the file, and in such cases, the error will be reported to the user in the error.",
"Finally, the command will fail if the server is not configured to use an external ACL file."
],
"ACL LOG": [
"When called to show security events:",
"* [Array reply](../topics/protocol.md#arrays): an array of [Bulk string reply](../topics/protocol.md#bulk-strings) elements representing ACL security events.",
"When called with `RESET`:",
"* [Simple string reply](../topics/protocol.md#simple-strings): `OK` if the security log was cleared."
],
"ACL SAVE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`.",
"The command may fail with an error for several reasons: if the file cannot be written or if the server is not configured to use an external ACL file."
],
"ACL SETUSER": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`.",
"If the rules contain errors, the error is returned."
],
"ACL USERS": [
"[Array reply](../topics/protocol.md#arrays): list of existing ACL users."
],
"ACL WHOAMI": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): the username of the current connection."
],
"APPEND": [
"[Integer reply](../topics/protocol.md#integers): the length of the string after the append operation."
],
"ASKING": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"AUTH": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`, or an error if the password, or username/password pair, is invalid."
],
"BF.ADD": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): `1` if the item was successfully added",
"* [Integer reply](../topics/protocol.md#integers): `0` if the item already existed in the bloom filter",
"",
"An error will occur if input is invalid, if a non bloom filter key with the same name already exists, if the bloom filter creation / scale out exceeds limits, or if an item is being added to a full non scaling filter."
],
"BF.CARD": [
"[Integer reply](../topics/protocol.md#integers): The number of items successfully added to the bloom filter, or 0 if the key does not exist"
],
"BF.EXISTS": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): `1` if the item exists in the bloom filter",
"* [Integer reply](../topics/protocol.md#integers): `0` if the bloom filter does not exist or the item has not been added to the bloom filter"
],
"BF.INFO": [
"When no optional arguments are provided:",
"* [Array reply](../topics/protocol.md#arrays): List of information about the bloom filter.",
"When an optional argument excluding ERROR is provided:",
"* [Integer reply](../topics/protocol.md#integers): argument value",
"When ERROR is provided as an optional argument:",
"* [String reply](../topics/protocol.md#simple-strings): argument value"
],
"BF.INSERT": [
"[Array reply](../topics/protocol.md#arrays): Array of ints (1’s and 0’s) - if filter already exists or if creation was successful. An empty array if no items are provided",
"",
"An error will occur if input is invalid, if a non bloom filter key with the same name already exists, if the bloom filter creation / scale out exceeds limits, or if an item is being added to a full non scaling filter."
],
"BF.MADD": [
"[Array reply](../topics/protocol.md#arrays): Array of ints (1’s and 0’s)",
"",
"An error will occur if input is invalid, if a non bloom filter key with the same name already exists, if the bloom filter creation / scale out exceeds limits, or if an item is being added to a full non scaling filter."
],
"BF.MEXISTS": [
"[Array reply](../topics/protocol.md#arrays): Array of ints (1’s and 0’s)"
],
"BF.RESERVE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`.",
"",
"An error will occur if input is invalid, if a key with the same name already exists, or if the bloom filter creation exceeds limits."
],
"BGREWRITEAOF": [
"[Simple string reply](../topics/protocol.md#simple-strings): a simple string reply indicating that the rewriting started or is about to start ASAP when the call is executed with success.",
"",
"The command may reply with an error in certain cases, as documented above."
],
"BGSAVE": [
"One of the following:",
"* [Simple string reply](../topics/protocol.md#simple-strings): `Background saving started`.",
"* [Simple string reply](../topics/protocol.md#simple-strings): `Background saving scheduled`."
],
"BITCOUNT": [
"[Integer reply](../topics/protocol.md#integers): the number of bits set to 1."
],
"BITFIELD": [
"One of the following:",
"* [Array reply](../topics/protocol.md#arrays): each entry being the corresponding result of the sub-command given at the same position.",
"* [Nil reply](../topics/protocol.md#bulk-strings): if OVERFLOW FAIL was given and overflows or underflows are detected."
],
"BITFIELD_RO": [
"[Array reply](../topics/protocol.md#arrays): each entry being the corresponding result of the sub-command given at the same position."
],
"BITOP": [
"[Integer reply](../topics/protocol.md#integers): the size of the string stored in the destination key is equal to the size of the longest input string."
],
"BITPOS": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): the position of the first bit set to 1 or 0 according to the request",
"* [Integer reply](../topics/protocol.md#integers): `-1`. In case the `bit` argument is 1 and the string is empty or composed of just zero bytes",
"",
"If we look for set bits (the bit argument is 1) and the string is empty or composed of just zero bytes, -1 is returned.",
"",
"If we look for clear bits (the bit argument is 0) and the string only contains bits set to 1, the function returns the first bit not part of the string on the right. So if the string is three bytes set to the value `0xff` the command `BITPOS key 0` will return 24, since up to bit 23 all the bits are 1.",
"",
"The function considers the right of the string as padded with zeros if you look for clear bits and specify no range or the _start_ argument **only**.",
"",
"However, this behavior changes if you are looking for clear bits and specify a range with both _start_ and _end_.",
"If a clear bit isn't found in the specified range, the function returns -1 as the user specified a clear range and there are no 0 bits in that range."
],
"BLMOVE": [
"One of the following:",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): the element being popped from the _source_ and pushed to the _destination_.",
"* [Nil reply](../topics/protocol.md#bulk-strings): the operation timed-out"
],
"BLMPOP": [
"One of the following:",
"* [Nil reply](../topics/protocol.md#bulk-strings): when no element could be popped and the _timeout_ is reached.",
"* [Array reply](../topics/protocol.md#arrays): a two-element array with the first element being the name of the key from which elements were popped, and the second element being an array of the popped elements."
],
"BLPOP": [
"One of the following:",
"* [Nil reply](../topics/protocol.md#bulk-strings): no element could be popped and the timeout expired",
"* [Array reply](../topics/protocol.md#arrays): the key from which the element was popped and the value of the popped element."
],
"BRPOP": [
"One of the following:",
"* [Nil reply](../topics/protocol.md#bulk-strings): no element could be popped and the timeout expired.",
"* [Array reply](../topics/protocol.md#arrays): the key from which the element was popped and the value of the popped element"
],
"BRPOPLPUSH": [
"One of the following:",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): the element being popped from _source_ and pushed to _destination_.",
"* [Nil reply](../topics/protocol.md#bulk-strings): the timeout is reached."
],
"BZMPOP": [
"One of the following:",
"* [Nil reply](../topics/protocol.md#bulk-strings): when no element could be popped.",
"* [Array reply](../topics/protocol.md#arrays): a two-element array with the first element being the name of the key from which elements were popped, and the second element is an array of the popped elements. Every entry in the elements array is also an array that contains the member and its score."
],
"BZPOPMAX": [
"One of the following:",
"* [Nil reply](../topics/protocol.md#bulk-strings): when no element could be popped and the _timeout_ expired.",
"* [Array reply](../topics/protocol.md#arrays): the keyname, popped member, and its score."
],
"BZPOPMIN": [
"One of the following:",
"* [Nil reply](../topics/protocol.md#bulk-strings): when no element could be popped and the _timeout_ expired.",
"* [Array reply](../topics/protocol.md#arrays): the keyname, popped member, and its score."
],
"CLIENT": [],
"CLIENT CACHING": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` or an error if the argument is not \"yes\" or \"no\"."
],
"CLIENT CAPA": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"CLIENT GETNAME": [
"One of the following:",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): the connection name of the current connection.",
"* [Nil reply](../topics/protocol.md#bulk-strings): the connection name was not set."
],
"CLIENT GETREDIR": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): `0` when not redirecting notifications to any client.",
"* [Integer reply](../topics/protocol.md#integers): `-1` if client tracking is not enabled.",
"* [Integer reply](../topics/protocol.md#integers): the ID of the client to which notification are being redirected."
],
"CLIENT HELP": [
"[Array reply](../topics/protocol.md#arrays): a list of subcommands and their descriptions."
],
"CLIENT ID": [
"[Integer reply](../topics/protocol.md#integers): the ID of the client."
],
"CLIENT IMPORT-SOURCE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"CLIENT INFO": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): a unique string for the current client, as described at the `CLIENT LIST` page."
],
"CLIENT KILL": [
"One of the following:",
"* [Simple string reply](../topics/protocol.md#simple-strings): `OK` when called in 3 argument format and the connection has been closed.",
"* [Integer reply](../topics/protocol.md#integers): when called in filter/value format, the number of clients killed."
],
"CLIENT LIST": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): information and statistics about client connections."
],
"CLIENT NO-EVICT": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"CLIENT NO-TOUCH": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"CLIENT PAUSE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` or an error if the timeout is invalid."
],
"CLIENT REPLY": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` when called with `ON`. When called with either `OFF` or `SKIP` sub-commands, no reply is made."
],
"CLIENT SETINFO": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the attribute name was successfully set."
],
"CLIENT SETNAME": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the connection name was successfully set."
],
"CLIENT TRACKING": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the connection was successfully put in tracking mode or if the tracking mode was successfully disabled. Otherwise, an error is returned."
],
"CLIENT TRACKINGINFO": [
"[Array reply](../topics/protocol.md#arrays): a list of tracking information sections and their respective values."
],
"CLIENT UNBLOCK": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): `0` if the client was unblocked successfully.",
"* [Integer reply](../topics/protocol.md#integers): `1` if the client wasn't unblocked."
],
"CLIENT UNPAUSE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"CLUSTER": [],
"CLUSTER ADDSLOTS": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was successful. Otherwise an error is returned."
],
"CLUSTER ADDSLOTSRANGE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was successful. Otherwise an error is returned."
],
"CLUSTER BUMPEPOCH": [
"One of the following:",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): `BUMPED` if the epoch was incremented.",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): `STILL` if the node already has the greatest configured epoch in the cluster."
],
"CLUSTER COUNT-FAILURE-REPORTS": [
"[Integer reply](../topics/protocol.md#integers): the number of active failure reports for the node."
],
"CLUSTER COUNTKEYSINSLOT": [
"[Integer reply](../topics/protocol.md#integers): The number of keys in the specified hash slot, or an error if the hash slot is invalid."
],
"CLUSTER DELSLOTS": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was successful. Otherwise an error is returned."
],
"CLUSTER DELSLOTSRANGE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was successful. Otherwise an error is returned."
],
"CLUSTER FAILOVER": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was accepted and a manual failover is going to be attempted. An error if the operation cannot be executed, for example if the client is connected to a node that is already a primary."
],
"CLUSTER FLUSHSLOTS": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"CLUSTER FORGET": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was executed successfully. Otherwise an error is returned."
],
"CLUSTER GETKEYSINSLOT": [
"[Array reply](../topics/protocol.md#arrays): an array with up to count elements."
],
"CLUSTER HELP": [
"[Array reply](../topics/protocol.md#arrays): a list of subcommands and their descriptions."
],
"CLUSTER INFO": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): A map between named fields and values in the form of `<field>:<value>` lines separated by newlines composed by the two bytes `CRLF`."
],
"CLUSTER KEYSLOT": [
"[Integer reply](../topics/protocol.md#integers): The hash slot number for the specified key"
],
"CLUSTER LINKS": [
"[Array reply](../topics/protocol.md#arrays): an array of maps where each map contains various attributes and their values of a cluster link."
],
"CLUSTER MEET": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was successful. If the port or cluster bus port number is out of range, or if an invalid address is specified, an error is returned."
],
"CLUSTER MYID": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): the node ID."
],
"CLUSTER MYSHARDID": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): the node's shard ID."
],
"CLUSTER NODES": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): the serialized cluster configuration."
],
"CLUSTER REPLICAS": [
"[Array reply](../topics/protocol.md#arrays): a list of replica nodes replicating from the specified primary node provided in the same format used by `CLUSTER NODES`."
],
"CLUSTER REPLICATE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was successful. Otherwise an error is returned."
],
"CLUSTER RESET": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was successful. Otherwise an error is returned."
],
"CLUSTER SAVECONFIG": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was successful. Otherwise an error is returned."
],
"CLUSTER SET-CONFIG-EPOCH": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was successful. Otherwise an error is returned."
],
"CLUSTER SETSLOT": [
"[Simple string reply](../topics/protocol.md#simple-strings): all the sub-commands return `OK` if the command was successful. Otherwise an error is returned."
],
"CLUSTER SHARDS": [
"[Array reply](../topics/protocol.md#arrays): a nested list of a map of hash ranges and shard nodes describing individual shards."
],
"CLUSTER SLAVES": [
"[Array reply](../topics/protocol.md#arrays): a list of replica nodes replicating from the specified primary node provided in the same format used by `CLUSTER NODES`."
],
"CLUSTER SLOT-STATS": [
"[Array reply](../topics/protocol.md#arrays): nested list of slot usage statistics."
],
"CLUSTER SLOTS": [
"[Array reply](../topics/protocol.md#arrays): nested list of slot ranges with networking information."
],
"CLUSTERSCAN": [
"[Array reply](../topics/protocol.md#arrays): specifically, an array with two elements.",
"* The first element is a [Bulk string reply](../topics/protocol.md#bulk-strings) that represents the cursor.",
"* The second element is an [Array reply](../topics/protocol.md#arrays) with the names of scanned keys."
],
"COMMAND": [
"[Array reply](../topics/protocol.md#arrays): a nested list of command details. The order of the commands in the array is random."
],
"COMMAND COUNT": [
"[Integer reply](../topics/protocol.md#integers): the number of commands returned by `COMMAND`."
],
"COMMAND DOCS": [
"[Array reply](../topics/protocol.md#arrays): a map, as a flattened array, where each key is a command name, and each value is the documentary information."
],
"COMMAND GETKEYS": [
"[Array reply](../topics/protocol.md#arrays): a list of keys from the given command."
],
"COMMAND GETKEYSANDFLAGS": [
"[Array reply](../topics/protocol.md#arrays): a list of keys from the given command and their usage flags."
],
"COMMAND HELP": [
"[Array reply](../topics/protocol.md#arrays): a list of sub-commands and their descriptions."
],
"COMMAND INFO": [
"[Array reply](../topics/protocol.md#arrays): a nested list of command details."
],
"COMMAND LIST": [
"[Array reply](../topics/protocol.md#arrays): a list of command names."
],
"CONFIG": [],
"CONFIG GET": [
"[Array reply](../topics/protocol.md#arrays): a list of configuration parameters matching the provided arguments."
],
"CONFIG HELP": [
"[Array reply](../topics/protocol.md#arrays): a list of sub-commands and their descriptions."
],
"CONFIG RESETSTAT": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"CONFIG REWRITE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` when the configuration was rewritten properly. Otherwise an error is returned."
],
"CONFIG SET": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` when the configuration was set properly. Otherwise an error is returned."
],
"COPY": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): `1` if _source_ was copied.",
"* [Integer reply](../topics/protocol.md#integers): `0` if _source_ was not copied when the destination key already exists."
],
"DBSIZE": [
"[Integer reply](../topics/protocol.md#integers): the number of keys in the currently-selected database."
],
"DEBUG": [],
"DECR": [
"[Integer reply](../topics/protocol.md#integers): the value of the key after decrementing it."
],
"DECRBY": [
"[Integer reply](../topics/protocol.md#integers): the value of the key after decrementing it."
],
"DEL": [
"[Integer reply](../topics/protocol.md#integers): the number of keys that were removed."
],
"DELIFEQ": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): `1` if the key was deleted.",
"* [Integer reply](../topics/protocol.md#integers): `0` if the key was not deleted because it did not exist or the value was not equal to the provided value."
],
"DISCARD": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"DUMP": [
"One of the following:",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): the serialized value of the key.",
"* [Nil reply](../topics/protocol.md#bulk-strings): the key does not exist."
],
"ECHO": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): the given string."
],
"EVAL": [
"The return value depends on the script that was executed."
],
"EVALSHA": [
"The return value depends on the script that was executed."
],
"EVALSHA_RO": [
"The return value depends on the script that was executed."
],
"EVAL_RO": [
"The return value depends on the script that was executed."
],
"EXEC": [
"One of the following:",
"* [Array reply](../topics/protocol.md#arrays): each element being the reply to each of the commands in the atomic transaction.",
"* [Nil reply](../topics/protocol.md#bulk-strings): the transaction was aborted because a `WATCH`ed key was touched."
],
"EXISTS": [
"[Integer reply](../topics/protocol.md#integers): the number of keys that exist from those specified as arguments."
],
"EXPIRE": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): `0` if the timeout was not set; for example, the key doesn't exist, or the operation was skipped because of the provided arguments.",
"* [Integer reply](../topics/protocol.md#integers): `1` if the timeout was set."
],
"EXPIREAT": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): `0` if the timeout was not set; for example, the key doesn't exist, or the operation was skipped because of the provided arguments.",
"* [Integer reply](../topics/protocol.md#integers): `1` if the timeout was set."
],
"EXPIRETIME": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): the expiration Unix timestamp in seconds.",
"* [Integer reply](../topics/protocol.md#integers): `-1` if the key exists but has no associated expiration time.",
"* [Integer reply](../topics/protocol.md#integers): `-2` if the key does not exist."
],
"FAILOVER": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK` if the command was accepted and a coordinated failover is in progress. An error if the operation cannot be executed."
],
"FCALL": [
"The return value depends on the function that was executed."
],
"FCALL_RO": [
"The return value depends on the function that was executed."
],
"FLUSHALL": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"FLUSHDB": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"FT.CREATE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"FT.DROPINDEX": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"FT.INFO": [
"[Array reply](../topics/protocol.md#arrays):: a map of index fields in the form of key followed by value"
],
"FT.SEARCH": [
"[Array reply](../topics/protocol.md#arrays): the first entry in the array represents the count of matching keys, followed by one array entry for each matching key. When `NOCONTENT` is specified, each entry in the response contains only the matching key name, otherwise, each entry includes the matching key name, followed by an array of the returned fields"
],
"FT._LIST": [
"[Array reply](../topics/protocol.md#arrays): an array of strings which are the currently defined index names"
],
"FUNCTION": [],
"FUNCTION DELETE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"FUNCTION DUMP": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): the serialized payload"
],
"FUNCTION FLUSH": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"FUNCTION HELP": [
"[Array reply](../topics/protocol.md#arrays): a list of sub-commands and their descriptions."
],
"FUNCTION KILL": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"FUNCTION LIST": [
"[Array reply](../topics/protocol.md#arrays): information about functions and libraries."
],
"FUNCTION LOAD": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): the library name that was loaded."
],
"FUNCTION RESTORE": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"FUNCTION STATS": [
"[Array reply](../topics/protocol.md#arrays): information about the function that's currently running and information about the available execution engines."
],
"GEOADD": [
"[Integer reply](../topics/protocol.md#integers): When used without optional arguments, the number of elements added to the sorted set (excluding score updates). If the CH option is specified, the number of elements that were changed (added or updated)."
],
"GEODIST": [
"One of the following:",
"* [Nil reply](../topics/protocol.md#bulk-strings): one or both of the elements are missing.",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): distance as a double (represented as a string) in the specified units."
],
"GEOHASH": [
"[Array reply](../topics/protocol.md#arrays): an array where each element is the Geohash corresponding to each member name passed as an argument to the command."
],
"GEOPOS": [
"[Array reply](../topics/protocol.md#arrays): an array where each element is a two elements array representing longitude and latitude (x,y) of each member name passed as argument to the command. Non-existing elements are reported as [Nil reply](../topics/protocol.md#bulk-strings) elements of the array."
],
"GEORADIUS": [
"One of the following:",
"* If no `WITH*` option is specified, an [Array reply](../topics/protocol.md#arrays) of matched member names",
"* If `WITHCOORD`, `WITHDIST`, or `WITHHASH` options are specified, the command returns an [Array reply](../topics/protocol.md#arrays) of arrays, where each sub-array represents a single item:",
" 1. The distance from the center as a floating point number, in the same unit specified in the radius.",
" 1. The Geohash integer.",
" 1. The coordinates as a two items x,y array (longitude,latitude).",
"",
"For example, the command `GEORADIUS Sicily 15 37 200 km WITHCOORD WITHDIST` will return each item in the following way:",
"",
"`[\"Palermo\",\"190.4424\",[\"13.361389338970184\",\"38.115556395496299\"]]`"
],
"GEORADIUSBYMEMBER": [
"One of the following:",
"* If no `WITH*` option is specified, an [Array reply](../topics/protocol.md#arrays) of matched member names",
"* If `WITHCOORD`, `WITHDIST`, or `WITHHASH` options are specified, the command returns an [Array reply](../topics/protocol.md#arrays) of arrays, where each sub-array represents a single item:",
" * The distance from the center as a floating point number, in the same unit specified in the radius.",
" * The Geohash integer.",
" * The coordinates as a two items x,y array (longitude,latitude)."
],
"GEORADIUSBYMEMBER_RO": [
"One of the following:",
"* If no `WITH*` option is specified, an [Array reply](../topics/protocol.md#arrays) of matched member names",
"* If `WITHCOORD`, `WITHDIST`, or `WITHHASH` options are specified, the command returns an [Array reply](../topics/protocol.md#arrays) of arrays, where each sub-array represents a single item:",
" * The distance from the center as a floating point number, in the same unit specified in the radius.",
" * The Geohash integer.",
" * The coordinates as a two items x,y array (longitude,latitude)."
],
"GEORADIUS_RO": [
"One of the following:",
"* If no `WITH*` option is specified, an [Array reply](../topics/protocol.md#arrays) of matched member names",
"* If `WITHCOORD`, `WITHDIST`, or `WITHHASH` options are specified, the command returns an [Array reply](../topics/protocol.md#arrays) of arrays, where each sub-array represents a single item:",
" * The distance from the center as a floating point number, in the same unit specified in the radius.",
" * The Geohash integer.",
" * The coordinates as a two items x,y array (longitude,latitude)."
],
"GEOSEARCH": [
"One of the following:",
"* If no `WITH*` option is specified, an [Array reply](../topics/protocol.md#arrays) of matched member names",
"* If `WITHCOORD`, `WITHDIST`, or `WITHHASH` options are specified, the command returns an [Array reply](../topics/protocol.md#arrays) of arrays, where each sub-array represents a single item:",
" * The distance from the center as a floating point number, in the same unit specified in the radius.",
" * The Geohash integer.",
" * The coordinates as a two items x,y array (longitude,latitude)."
],
"GEOSEARCHSTORE": [
"[Integer reply](../topics/protocol.md#integers): the number of elements in the resulting set"
],
"GET": [
"One of the following:",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): the value of the key.",
"* [Nil reply](../topics/protocol.md#bulk-strings): if the key does not exist."
],
"GETBIT": [
"The bit value stored at _offset_, one of the following:",
"* [Integer reply](../topics/protocol.md#integers): `0`.",
"* [Integer reply](../topics/protocol.md#integers): `1`."
],
"GETDEL": [
"One of the following:",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): the value of the key.",
"* [Nil reply](../topics/protocol.md#bulk-strings): if the key does not exist or if the key's value type is not a string."
],
"GETEX": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): the value of `key`",
"[Nil reply](../topics/protocol.md#bulk-strings): if `key` does not exist."
],
"GETRANGE": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): The substring of the string value stored at key, determined by the offsets start and end (both are inclusive)."
],
"GETSET": [
"One of the following:",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): the old value stored at the key.",
"* [Nil reply](../topics/protocol.md#bulk-strings): if the key does not exist."
],
"HDEL": [
"[Integer reply](../topics/protocol.md#integers): the number of fields that were removed from the hash, excluding any specified but non-existing fields."
],
"HELLO": [
"[Map reply](../topics/protocol.md#maps): a list of server properties.",
"[Simple error reply](../topics/protocol.md#simple-errors): if the `protover` requested does not exist."
],
"HEXISTS": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): `0` if the hash does not contain the field, or the key does not exist.",
"* [Integer reply](../topics/protocol.md#integers): `1` if the hash contains the field."
],
"HGET": [
"One of the following:",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): The value associated with the field.",
"* [Nil reply](../topics/protocol.md#bulk-strings): If the field is not present in the hash or key does not exist."
],
"HGETALL": [
"[Array reply](../topics/protocol.md#arrays): a list of fields and their values stored in the hash, or an empty list when key does not exist."
],
"HINCRBY": [
"[Integer reply](../topics/protocol.md#integers): the value of the field after the increment operation."
],
"HINCRBYFLOAT": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): the value of the field after the increment operation."
],
"HKEYS": [
"[Array reply](../topics/protocol.md#arrays): a list of fields in the hash, or an empty list when the key does not exist."
],
"HLEN": [
"[Integer reply](../topics/protocol.md#integers): the number of fields in the hash, or 0 when the key does not exist."
],
"HMGET": [
"[Array reply](../topics/protocol.md#arrays): a list of values associated with the given fields, in the same order as they are requested."
],
"HGETDEL": [
"[Array reply](../topics/protocol.md#arrays): a list of values associated with the given fields that are deleted or `nil` for the fields that do not exist. These are in same order as requested."
],
"HMSET": [
"[Simple string reply](../topics/protocol.md#simple-strings): `OK`."
],
"HRANDFIELD": [
"Any of the following:",
"* [Nil reply](../topics/protocol.md#bulk-strings): if the key doesn't exist",
"* [Bulk string reply](../topics/protocol.md#bulk-strings): a single, randomly selected field when the `count` option is not used",
"* [Array reply](../topics/protocol.md#arrays): a list containing `count` fields when the `count` option is used, or an empty array if the key does not exists.",
"* [Array reply](../topics/protocol.md#arrays): a list of fields and their values when `count` and `WITHVALUES` were both used."
],
"HSCAN": [
"[Array reply](../topics/protocol.md#arrays): a two-element array.",
"* The first element is a [Bulk string reply](../topics/protocol.md#bulk-strings) that represents an unsigned 64-bit number, the cursor.",
"* The second element is an [Array reply](../topics/protocol.md#arrays) of field/value pairs that were scanned. When `NOVALUES` option is on, a list of keys from the hash."
],
"HSET": [
"[Integer reply](../topics/protocol.md#integers): the number of fields that were added."
],
"HSETNX": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): `0` if the field already exists in the hash and no operation was performed.",
"* [Integer reply](../topics/protocol.md#integers): `1` if the field is a new field in the hash and the value was set."
],
"HSTRLEN": [
"[Integer reply](../topics/protocol.md#integers): the string length of the value associated with the _field_, or zero when the _field_ isn't present in the hash or the _key_ doesn't exist at all."
],
"HVALS": [
"[Array reply](../topics/protocol.md#arrays): a list of values in the hash, or an empty list when the key does not exist."
],
"HSETEX": [
"One of the following:",
"* [Integer reply](../topics/protocol.md#integers): `0` if none of the provided fields' values and/or expiration times were set.",
"* [Integer reply](../topics/protocol.md#integers): `1` if all the fields' values and/or expiration times were set."
],
"HGETEX": [
"[Array reply](../topics/protocol.md#arrays): a list of values associated with the given fields, in the same order as they are requested."
],
"HEXPIRE": [
"[Array reply](../topics/protocol.md#arrays): a list of integer codes indicating the result of setting expiry on each specified field, in the same order as the fields are requested.",
"* -2: Field does not exist in the HASH, or key does not exist.",
"* 0: The specified NX | XX | GT | LT condition has not been met.",
"* 1: The expiration time was applied.",
"* 2: When called with 0 seconds."
],
"HPEXPIRE": [
"[Array reply](../topics/protocol.md#arrays): a list of integer codes indicating the result of setting expiry on each specified field, in the same order as the fields are requested.",
"* -2: Field does not exist in the HASH, or key does not exist.",
"* 0: The specified NX | XX | GT | LT condition has not been met.",
"* 1: The expiration time was applied.",
"* 2: When called with 0 seconds."
],
"HEXPIREAT": [
"[Array reply](../topics/protocol.md#arrays): a list of integer codes indicating the result of setting expiry on each specified field, in the same order as the fields are requested.",
"* -2: Field does not exist in the HASH, or key does not exist.",
"* 0: The specified NX | XX | GT | LT condition has not been met.",
"* 1: The expiration time was applied.",
"* 2: When called with 0 seconds."
],
"HPEXPIREAT": [
"[Array reply](../topics/protocol.md#arrays): a list of integer codes indicating the result of setting expiry on each specified field, in the same order as the fields are requested.",
"* -2: Field does not exist in the HASH, or key does not exist.",
"* 0: The specified NX | XX | GT | LT condition has not been met.",
"* 1: The expiration time was applied.",
"* 2: When called with 0 seconds."
],
"HPERSIST": [
"[Array reply](../topics/protocol.md#arrays): a list of integer codes indicating the result of setting expiry on each specified field, in the same order as the fields are requested.",
"* -2: Field does not exist in the provided hash key, or the hash key does not exist.",
"* -1: Field exists in the provided hash key, but has no expiration associated with it.",
"* 1: The expiration time was removed from the hash key field."
],
"HTTL": [
"[Array reply](../topics/protocol.md#arrays): a list of values associated with the result of getting the remaining time-to-live of the specific fields, in the same order as they are requested.",
"* -2: Field does not exist in the provided hash key, or the hash key is empty.",
"* -1: Field exists in the provided hash key, but has no expiration associated with it.",
"* [Integer](../topics/protocol.md#integers): The expiration time associated with the hash key field, in seconds."
],
"HPTTL": [
"[Array reply](../topics/protocol.md#arrays): a list of values associated with the result of getting the remaining time-to-live of the specific fields, in the same order as they are requested.",
"* -2: Field does not exist in the provided hash key, or the hash key is empty.",
"* -1: Field exists in the provided hash key, but has no expiration associated with it.",
"* [Integer](../topics/protocol.md#integers): The expiration time associated with the hash key field, in milliseconds."
],
"HEXPIRETIME": [
"[Array reply](../topics/protocol.md#arrays): a list of values associated with the result of getting the absolute expiry timestamp of the specific fields, in the same order as they are requested.",
"* -2: Field does not exist in the provided hash key, or the hash key is empty.",
"* -1: Field exists in the provided hash key, but has no expiration associated with it.",
"* [Integer](../topics/protocol.md#integers): The expiration time associated with the hash key field, in seconds."
],
"HPEXPIRETIME": [
"[Array reply](../topics/protocol.md#arrays): a list of values associated with the result of getting the absolute expiry timestamp of the specific fields, in the same order as they are requested.",
"* -2: Field does not exist in the provided hash key, or the hash key is empty.",
"* -1: Field exists in the provided hash key, but has no expiration associated with it.",
"* [Integer](../topics/protocol.md#integers): The expiration time associated with the hash key field, in milliseconds."
],
"INCR": [
"[Integer reply](../topics/protocol.md#integers): the value of the key after the increment."
],
"INCRBY": [
"[Integer reply](../topics/protocol.md#integers): the value of the key after the increment."
],
"INCRBYFLOAT": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): the value of the key after the increment."
],
"INFO": [
"[Bulk string reply](../topics/protocol.md#bulk-strings): a map of info fields, one field per line in the form of `<field>:<value>` where the value can be a comma separated map like `<key>=<val>`. Also contains section header lines starting with `#` and blank lines.",
"",
"Lines can contain a section name (starting with a `#` character) or a property. All the properties are in the form of `field:value` terminated by `\\r\\n`."
],
"JSON.ARRAPPEND": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of integers representing the new length of the array at each path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is not an array.",
"* If the path is restricted syntax:",
" * [Integer reply](../topics/protocol.md#integers): The array's new length.",
" * [Integer reply](../topics/protocol.md#integers): If multiple array values are selected, the command returns the new length of the last updated array.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the path does not exist.",
" * if the value at the path is not an array (only for restricted syntax).",
""
],
"JSON.ARRINDEX": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of integers. Each value is the index of the matching element in the array at the path. The value is -1 if not found.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is not an array.",
"* If the path is restricted syntax:",
" * [Integer reply](../topics/protocol.md#integers): The index of matching element, or -1 if not found.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the path does not exist.",
" * if the value at the path is not an array (only for restricted syntax).",
""
],
"JSON.ARRINSERT": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of integers representing the new length of the array at each path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is an empty array or not an array.",
"* If the path is restricted syntax:",
" * [Integer reply](../topics/protocol.md#integers): The new length of the array.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the path does not exist.",
" * if the value at the path is not an array (only for restricted syntax).",
" * if the index argument is out of bounds.",
""
],
"JSON.ARRLEN": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of integers representing the array length at each path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is not an array.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the document key does not exist.",
"* If the path is restricted syntax:",
" * [Integer reply](../topics/protocol.md#integers): The array length.",
" * [Integer reply](../topics/protocol.md#integers): If multiple objects are selected, returns the first array's length.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the document key does not exist.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the path does not exist.",
" * if the value at the path is not an array (only for restricted syntax).",
""
],
"JSON.ARRPOP": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of bulk strings representing popped values at each path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is an empty array or not an array.",
"* If the path is restricted syntax:",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): The popped JSON value.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the array is empty.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the value at the path is not an array (only for restricted syntax).",
""
],
"JSON.ARRTRIM": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of integers representing the new length of the array at each path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is an empty array or not an array.",
"* If the path is restricted syntax:",
" * [Integer reply](../topics/protocol.md#integers): The new length of the array.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the array is empty.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the value at the path is not an array (only for restricted syntax).",
" * if an index argument is out of bounds.",
""
],
"JSON.CLEAR": [
"* [Integer reply](../topics/protocol.md#integers):",
" * The number of containers cleared.",
" * Returns 0 if clearing an empty array or object.",
" * Returns 0 if clearing a non-container value.",
" * Returns 0 if no array or object value is located by the path.",
""
],
"JSON.DEBUG": [
"Command response depends on the subcommand:",
"* For MEMORY:",
" * If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of integers representing memory size (in bytes) of JSON value at each path.",
" * [Array reply](../topics/protocol.md#arrays): Empty array if the Valkey key does not exist.",
" * If the path is restricted syntax:",
" * [Integer reply](../topics/protocol.md#integers): Memory size of the JSON value in bytes.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the Valkey key does not exist.",
"* For DEPTH:",
" * [Integer reply](../topics/protocol.md#integers): The maximum path depth of the JSON document.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the Valkey key does not exist.",
"* For FIELDS:",
" * If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of integers representing number of fields of JSON value at each path.",
" * [Array reply](../topics/protocol.md#arrays): Empty array if the Valkey key does not exist.",
" * If the path is restricted syntax:",
" * [Integer reply](../topics/protocol.md#integers): Number of fields of the JSON value.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the Valkey key does not exist.",
"* For HELP:",
" * [Array reply](../topics/protocol.md#arrays): Array of help messages.",
""
],
"JSON.DEL": [
"* [Integer reply](../topics/protocol.md#integers):",
" * The number of elements deleted.",
" * Returns 0 if the Valkey key does not exist.",
" * Returns 0 if the JSON path is invalid or does not exist.",
""
],
"JSON.GET": [
"* For enhanced path syntax:",
" * If one path is given:",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): Serialized string of an array of values.",
" * [Array reply](../topics/protocol.md#arrays): Empty array if no value is selected.",
" * If multiple paths are given:",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): Stringified JSON object, where each path is a key.",
" * Result conforms to enhanced syntax if there are mixed enhanced and restricted path syntax.",
" * [Array reply](../topics/protocol.md#arrays): Empty array for paths that do not exist.",
"* For restricted path syntax:",
" * If one path is given:",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): Serialized string of the value at the path.",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): First value if multiple values are selected.",
" * [Simple error reply](../topics/protocol.md#simple-errors): If the path does not exist.",
" * If multiple paths are given:",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): Stringified JSON object, where each path is a key.",
" * Result conforms to restricted syntax only if all paths are restricted.",
" * [Simple error reply](../topics/protocol.md#simple-errors): If any path does not exist.",
""
],
"JSON.MGET": [
"* [Array reply](../topics/protocol.md#arrays): Array of Bulk Strings with size equal to the number of keys in the command.",
" * Each element is either:",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): Serialized JSON as located by the path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the key does not exist, the path does not exist in the document, or the path is invalid.",
"* [Simple error reply](../topics/protocol.md#simple-errors): WRONGTYPE error if any specified key exists but is not a JSON key.",
""
],
"JSON.MSET": [
"* [Simple string reply](../topics/protocol.md#simple-strings): 'OK' if the operation was successful.",
"* [Simple error reply](../topics/protocol.md#simple-errors): If the operation failed.",
""
],
"JSON.NUMINCRBY": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of bulk strings representing the resulting value at each path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is not a number.",
"* If the path is restricted syntax:",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): The resulting value.",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): If multiple values are selected, returns the result of the last updated value.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the number cannot be parsed.",
" * if the result is out of the range of double.",
" * if the document key does not exist.",
" * if the value at the path is not a number (only for restricted syntax).",
""
],
"JSON.NUMMULTBY": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of bulk strings representing the resulting value at each path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is not a number.",
"* If the path is restricted syntax:",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): The resulting value.",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): If multiple values are selected, returns the result of the last updated value.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the number cannot be parsed.",
" * if the result is out of the range of double.",
" * if the document key does not exist.",
" * if the value at the path is not a number (only for restricted syntax).",
""
],
"JSON.OBJKEYS": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of arrays, each containing bulk strings representing keys in a matching object.",
" * [Array reply](../topics/protocol.md#arrays): Empty array for each path where the value is not an object.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the document key does not exist.",
"* If the path is restricted syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of bulk strings, each representing a key name in the object.",
" * [Array reply](../topics/protocol.md#arrays): If multiple objects are selected, returns the keys of the first object.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the document key does not exist.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the value at the path is not an object (only for restricted syntax).",
" * if the path does not exist (only for restricted syntax).",
""
],
"JSON.OBJLEN": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of integers representing the object length at each path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is not an object.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the document key does not exist.",
"* If the path is restricted syntax:",
" * [Integer reply](../topics/protocol.md#integers): Number of keys in the object.",
" * [Integer reply](../topics/protocol.md#integers): If multiple objects are selected, returns the first object's length.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the document key does not exist.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the value at the path is not an object (only for restricted syntax).",
" * if the path does not exist (only for restricted syntax).",
""
],
"JSON.RESP": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of arrays, each representing the RESP form of the value at one path.",
" * [Array reply](../topics/protocol.md#arrays): Empty array if the document key does not exist.",
"* If the path is restricted syntax:",
" * [Array reply](../topics/protocol.md#arrays): Representing the RESP form of the value at the path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the document key does not exist.",
""
],
"JSON.SET": [
"* [Simple string reply](../topics/protocol.md#simple-strings): 'OK' on success.",
"* [Nil reply](../topics/protocol.md#bulk-strings): If the NX or XX condition is not met.",
""
],
"JSON.STRAPPEND": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of integers representing the new length of the string at each path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is not a string.",
"* If the path is restricted syntax:",
" * [Integer reply](../topics/protocol.md#integers): The string's new length.",
" * [Integer reply](../topics/protocol.md#integers): If multiple string values are selected, returns the new length of the last updated string.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the input json argument is not a valid JSON string.",
" * if the path does not exist.",
" * if the value at the path is not a string (only for restricted syntax).",
""
],
"JSON.STRLEN": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of integers representing the length of string value at each path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is not a string.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the document key does not exist.",
"* If the path is restricted syntax:",
" * [Integer reply](../topics/protocol.md#integers): The string's length.",
" * [Integer reply](../topics/protocol.md#integers): If multiple string values are selected, returns the first string's length.",
" * [Nil reply](../topics/protocol.md#bulk-strings): If the document key does not exist.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the value at the path is not a string (only for restricted syntax).",
" * if the path does not exist (only for restricted syntax).",
""
],
"JSON.TOGGLE": [
"* If the path is enhanced syntax:",
" * [Array reply](../topics/protocol.md#arrays): Array of integers (0 for false, 1 for true) representing the resulting boolean value at each path.",
" * [Nil reply](../topics/protocol.md#bulk-strings): For each path where the value is not a boolean.",
"* If the path is restricted syntax:",
" * [Bulk string reply](../topics/protocol.md#bulk-strings): 'true' or 'false' representing the resulting boolean value.",
"* [Simple error reply](../topics/protocol.md#simple-errors):",
" * if the document key does not exist.",
" * if the value at the path is not a boolean (only for restricted syntax).",