1/* Automatically generated by generate-command-code.py, do not edit. */
2
3#include "server.h"
4
5/* We have fabulous commands from
6 * the fantastic
7 * Redis Command Table! */
8
9/********** BITCOUNT ********************/
10
11/* BITCOUNT history */
12commandHistory BITCOUNT_History[] = {
13{"7.0.0","Added the `BYTE|BIT` option."},
14{0}
15};
16
17/* BITCOUNT tips */
18#define BITCOUNT_tips NULL
19
20/* BITCOUNT index index_unit argument table */
21struct redisCommandArg BITCOUNT_index_index_unit_Subargs[] = {
22{"byte",ARG_TYPE_PURE_TOKEN,-1,"BYTE",NULL,NULL,CMD_ARG_NONE},
23{"bit",ARG_TYPE_PURE_TOKEN,-1,"BIT",NULL,NULL,CMD_ARG_NONE},
24{0}
25};
26
27/* BITCOUNT index argument table */
28struct redisCommandArg BITCOUNT_index_Subargs[] = {
29{"start",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
30{"end",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
31{"index_unit",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=BITCOUNT_index_index_unit_Subargs},
32{0}
33};
34
35/* BITCOUNT argument table */
36struct redisCommandArg BITCOUNT_Args[] = {
37{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
38{"index",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=BITCOUNT_index_Subargs},
39{0}
40};
41
42/********** BITFIELD ********************/
43
44/* BITFIELD history */
45#define BITFIELD_History NULL
46
47/* BITFIELD tips */
48#define BITFIELD_tips NULL
49
50/* BITFIELD operation encoding_offset argument table */
51struct redisCommandArg BITFIELD_operation_encoding_offset_Subargs[] = {
52{"encoding",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
53{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
54{0}
55};
56
57/* BITFIELD operation write wrap_sat_fail argument table */
58struct redisCommandArg BITFIELD_operation_write_wrap_sat_fail_Subargs[] = {
59{"wrap",ARG_TYPE_PURE_TOKEN,-1,"WRAP",NULL,NULL,CMD_ARG_NONE},
60{"sat",ARG_TYPE_PURE_TOKEN,-1,"SAT",NULL,NULL,CMD_ARG_NONE},
61{"fail",ARG_TYPE_PURE_TOKEN,-1,"FAIL",NULL,NULL,CMD_ARG_NONE},
62{0}
63};
64
65/* BITFIELD operation write write_operation encoding_offset_value argument table */
66struct redisCommandArg BITFIELD_operation_write_write_operation_encoding_offset_value_Subargs[] = {
67{"encoding",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
68{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
69{"value",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
70{0}
71};
72
73/* BITFIELD operation write write_operation encoding_offset_increment argument table */
74struct redisCommandArg BITFIELD_operation_write_write_operation_encoding_offset_increment_Subargs[] = {
75{"encoding",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
76{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
77{"increment",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
78{0}
79};
80
81/* BITFIELD operation write write_operation argument table */
82struct redisCommandArg BITFIELD_operation_write_write_operation_Subargs[] = {
83{"encoding_offset_value",ARG_TYPE_BLOCK,-1,"SET",NULL,NULL,CMD_ARG_NONE,.subargs=BITFIELD_operation_write_write_operation_encoding_offset_value_Subargs},
84{"encoding_offset_increment",ARG_TYPE_BLOCK,-1,"INCRBY",NULL,NULL,CMD_ARG_NONE,.subargs=BITFIELD_operation_write_write_operation_encoding_offset_increment_Subargs},
85{0}
86};
87
88/* BITFIELD operation write argument table */
89struct redisCommandArg BITFIELD_operation_write_Subargs[] = {
90{"wrap_sat_fail",ARG_TYPE_ONEOF,-1,"OVERFLOW",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=BITFIELD_operation_write_wrap_sat_fail_Subargs},
91{"write_operation",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=BITFIELD_operation_write_write_operation_Subargs},
92{0}
93};
94
95/* BITFIELD operation argument table */
96struct redisCommandArg BITFIELD_operation_Subargs[] = {
97{"encoding_offset",ARG_TYPE_BLOCK,-1,"GET",NULL,NULL,CMD_ARG_NONE,.subargs=BITFIELD_operation_encoding_offset_Subargs},
98{"write",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=BITFIELD_operation_write_Subargs},
99{0}
100};
101
102/* BITFIELD argument table */
103struct redisCommandArg BITFIELD_Args[] = {
104{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
105{"operation",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=BITFIELD_operation_Subargs},
106{0}
107};
108
109/********** BITFIELD_RO ********************/
110
111/* BITFIELD_RO history */
112#define BITFIELD_RO_History NULL
113
114/* BITFIELD_RO tips */
115#define BITFIELD_RO_tips NULL
116
117/* BITFIELD_RO encoding_offset argument table */
118struct redisCommandArg BITFIELD_RO_encoding_offset_Subargs[] = {
119{"encoding",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
120{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
121{0}
122};
123
124/* BITFIELD_RO argument table */
125struct redisCommandArg BITFIELD_RO_Args[] = {
126{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
127{"encoding_offset",ARG_TYPE_BLOCK,-1,"GET",NULL,NULL,CMD_ARG_MULTIPLE|CMD_ARG_MULTIPLE_TOKEN,.subargs=BITFIELD_RO_encoding_offset_Subargs},
128{0}
129};
130
131/********** BITOP ********************/
132
133/* BITOP history */
134#define BITOP_History NULL
135
136/* BITOP tips */
137#define BITOP_tips NULL
138
139/* BITOP argument table */
140struct redisCommandArg BITOP_Args[] = {
141{"operation",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
142{"destkey",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
143{"key",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
144{0}
145};
146
147/********** BITPOS ********************/
148
149/* BITPOS history */
150commandHistory BITPOS_History[] = {
151{"7.0.0","Added the `BYTE|BIT` option."},
152{0}
153};
154
155/* BITPOS tips */
156#define BITPOS_tips NULL
157
158/* BITPOS index end_index index_unit argument table */
159struct redisCommandArg BITPOS_index_end_index_index_unit_Subargs[] = {
160{"byte",ARG_TYPE_PURE_TOKEN,-1,"BYTE",NULL,NULL,CMD_ARG_NONE},
161{"bit",ARG_TYPE_PURE_TOKEN,-1,"BIT",NULL,NULL,CMD_ARG_NONE},
162{0}
163};
164
165/* BITPOS index end_index argument table */
166struct redisCommandArg BITPOS_index_end_index_Subargs[] = {
167{"end",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
168{"index_unit",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=BITPOS_index_end_index_index_unit_Subargs},
169{0}
170};
171
172/* BITPOS index argument table */
173struct redisCommandArg BITPOS_index_Subargs[] = {
174{"start",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
175{"end_index",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=BITPOS_index_end_index_Subargs},
176{0}
177};
178
179/* BITPOS argument table */
180struct redisCommandArg BITPOS_Args[] = {
181{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
182{"bit",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
183{"index",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=BITPOS_index_Subargs},
184{0}
185};
186
187/********** GETBIT ********************/
188
189/* GETBIT history */
190#define GETBIT_History NULL
191
192/* GETBIT tips */
193#define GETBIT_tips NULL
194
195/* GETBIT argument table */
196struct redisCommandArg GETBIT_Args[] = {
197{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
198{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
199{0}
200};
201
202/********** SETBIT ********************/
203
204/* SETBIT history */
205#define SETBIT_History NULL
206
207/* SETBIT tips */
208#define SETBIT_tips NULL
209
210/* SETBIT argument table */
211struct redisCommandArg SETBIT_Args[] = {
212{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
213{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
214{"value",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
215{0}
216};
217
218/********** ASKING ********************/
219
220/* ASKING history */
221#define ASKING_History NULL
222
223/* ASKING tips */
224#define ASKING_tips NULL
225
226/********** CLUSTER ADDSLOTS ********************/
227
228/* CLUSTER ADDSLOTS history */
229#define CLUSTER_ADDSLOTS_History NULL
230
231/* CLUSTER ADDSLOTS tips */
232const char *CLUSTER_ADDSLOTS_tips[] = {
233"nondeterministic_output",
234NULL
235};
236
237/* CLUSTER ADDSLOTS argument table */
238struct redisCommandArg CLUSTER_ADDSLOTS_Args[] = {
239{"slot",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
240{0}
241};
242
243/********** CLUSTER ADDSLOTSRANGE ********************/
244
245/* CLUSTER ADDSLOTSRANGE history */
246#define CLUSTER_ADDSLOTSRANGE_History NULL
247
248/* CLUSTER ADDSLOTSRANGE tips */
249const char *CLUSTER_ADDSLOTSRANGE_tips[] = {
250"nondeterministic_output",
251NULL
252};
253
254/* CLUSTER ADDSLOTSRANGE start_slot_end_slot argument table */
255struct redisCommandArg CLUSTER_ADDSLOTSRANGE_start_slot_end_slot_Subargs[] = {
256{"start-slot",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
257{"end-slot",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
258{0}
259};
260
261/* CLUSTER ADDSLOTSRANGE argument table */
262struct redisCommandArg CLUSTER_ADDSLOTSRANGE_Args[] = {
263{"start-slot_end-slot",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=CLUSTER_ADDSLOTSRANGE_start_slot_end_slot_Subargs},
264{0}
265};
266
267/********** CLUSTER BUMPEPOCH ********************/
268
269/* CLUSTER BUMPEPOCH history */
270#define CLUSTER_BUMPEPOCH_History NULL
271
272/* CLUSTER BUMPEPOCH tips */
273const char *CLUSTER_BUMPEPOCH_tips[] = {
274"nondeterministic_output",
275NULL
276};
277
278/********** CLUSTER COUNT_FAILURE_REPORTS ********************/
279
280/* CLUSTER COUNT_FAILURE_REPORTS history */
281#define CLUSTER_COUNT_FAILURE_REPORTS_History NULL
282
283/* CLUSTER COUNT_FAILURE_REPORTS tips */
284const char *CLUSTER_COUNT_FAILURE_REPORTS_tips[] = {
285"nondeterministic_output",
286NULL
287};
288
289/* CLUSTER COUNT_FAILURE_REPORTS argument table */
290struct redisCommandArg CLUSTER_COUNT_FAILURE_REPORTS_Args[] = {
291{"node-id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
292{0}
293};
294
295/********** CLUSTER COUNTKEYSINSLOT ********************/
296
297/* CLUSTER COUNTKEYSINSLOT history */
298#define CLUSTER_COUNTKEYSINSLOT_History NULL
299
300/* CLUSTER COUNTKEYSINSLOT tips */
301const char *CLUSTER_COUNTKEYSINSLOT_tips[] = {
302"nondeterministic_output",
303NULL
304};
305
306/* CLUSTER COUNTKEYSINSLOT argument table */
307struct redisCommandArg CLUSTER_COUNTKEYSINSLOT_Args[] = {
308{"slot",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
309{0}
310};
311
312/********** CLUSTER DELSLOTS ********************/
313
314/* CLUSTER DELSLOTS history */
315#define CLUSTER_DELSLOTS_History NULL
316
317/* CLUSTER DELSLOTS tips */
318const char *CLUSTER_DELSLOTS_tips[] = {
319"nondeterministic_output",
320NULL
321};
322
323/* CLUSTER DELSLOTS argument table */
324struct redisCommandArg CLUSTER_DELSLOTS_Args[] = {
325{"slot",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
326{0}
327};
328
329/********** CLUSTER DELSLOTSRANGE ********************/
330
331/* CLUSTER DELSLOTSRANGE history */
332#define CLUSTER_DELSLOTSRANGE_History NULL
333
334/* CLUSTER DELSLOTSRANGE tips */
335const char *CLUSTER_DELSLOTSRANGE_tips[] = {
336"nondeterministic_output",
337NULL
338};
339
340/* CLUSTER DELSLOTSRANGE start_slot_end_slot argument table */
341struct redisCommandArg CLUSTER_DELSLOTSRANGE_start_slot_end_slot_Subargs[] = {
342{"start-slot",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
343{"end-slot",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
344{0}
345};
346
347/* CLUSTER DELSLOTSRANGE argument table */
348struct redisCommandArg CLUSTER_DELSLOTSRANGE_Args[] = {
349{"start-slot_end-slot",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=CLUSTER_DELSLOTSRANGE_start_slot_end_slot_Subargs},
350{0}
351};
352
353/********** CLUSTER FAILOVER ********************/
354
355/* CLUSTER FAILOVER history */
356#define CLUSTER_FAILOVER_History NULL
357
358/* CLUSTER FAILOVER tips */
359const char *CLUSTER_FAILOVER_tips[] = {
360"nondeterministic_output",
361NULL
362};
363
364/* CLUSTER FAILOVER options argument table */
365struct redisCommandArg CLUSTER_FAILOVER_options_Subargs[] = {
366{"force",ARG_TYPE_PURE_TOKEN,-1,"FORCE",NULL,NULL,CMD_ARG_NONE},
367{"takeover",ARG_TYPE_PURE_TOKEN,-1,"TAKEOVER",NULL,NULL,CMD_ARG_NONE},
368{0}
369};
370
371/* CLUSTER FAILOVER argument table */
372struct redisCommandArg CLUSTER_FAILOVER_Args[] = {
373{"options",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=CLUSTER_FAILOVER_options_Subargs},
374{0}
375};
376
377/********** CLUSTER FLUSHSLOTS ********************/
378
379/* CLUSTER FLUSHSLOTS history */
380#define CLUSTER_FLUSHSLOTS_History NULL
381
382/* CLUSTER FLUSHSLOTS tips */
383const char *CLUSTER_FLUSHSLOTS_tips[] = {
384"nondeterministic_output",
385NULL
386};
387
388/********** CLUSTER FORGET ********************/
389
390/* CLUSTER FORGET history */
391#define CLUSTER_FORGET_History NULL
392
393/* CLUSTER FORGET tips */
394const char *CLUSTER_FORGET_tips[] = {
395"nondeterministic_output",
396NULL
397};
398
399/* CLUSTER FORGET argument table */
400struct redisCommandArg CLUSTER_FORGET_Args[] = {
401{"node-id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
402{0}
403};
404
405/********** CLUSTER GETKEYSINSLOT ********************/
406
407/* CLUSTER GETKEYSINSLOT history */
408#define CLUSTER_GETKEYSINSLOT_History NULL
409
410/* CLUSTER GETKEYSINSLOT tips */
411const char *CLUSTER_GETKEYSINSLOT_tips[] = {
412"nondeterministic_output",
413NULL
414};
415
416/* CLUSTER GETKEYSINSLOT argument table */
417struct redisCommandArg CLUSTER_GETKEYSINSLOT_Args[] = {
418{"slot",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
419{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
420{0}
421};
422
423/********** CLUSTER HELP ********************/
424
425/* CLUSTER HELP history */
426#define CLUSTER_HELP_History NULL
427
428/* CLUSTER HELP tips */
429#define CLUSTER_HELP_tips NULL
430
431/********** CLUSTER INFO ********************/
432
433/* CLUSTER INFO history */
434#define CLUSTER_INFO_History NULL
435
436/* CLUSTER INFO tips */
437const char *CLUSTER_INFO_tips[] = {
438"nondeterministic_output",
439NULL
440};
441
442/********** CLUSTER KEYSLOT ********************/
443
444/* CLUSTER KEYSLOT history */
445#define CLUSTER_KEYSLOT_History NULL
446
447/* CLUSTER KEYSLOT tips */
448const char *CLUSTER_KEYSLOT_tips[] = {
449"nondeterministic_output",
450NULL
451};
452
453/* CLUSTER KEYSLOT argument table */
454struct redisCommandArg CLUSTER_KEYSLOT_Args[] = {
455{"key",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
456{0}
457};
458
459/********** CLUSTER LINKS ********************/
460
461/* CLUSTER LINKS history */
462#define CLUSTER_LINKS_History NULL
463
464/* CLUSTER LINKS tips */
465const char *CLUSTER_LINKS_tips[] = {
466"nondeterministic_output",
467NULL
468};
469
470/********** CLUSTER MEET ********************/
471
472/* CLUSTER MEET history */
473commandHistory CLUSTER_MEET_History[] = {
474{"4.0.0","Added the optional `cluster_bus_port` argument."},
475{0}
476};
477
478/* CLUSTER MEET tips */
479const char *CLUSTER_MEET_tips[] = {
480"nondeterministic_output",
481NULL
482};
483
484/* CLUSTER MEET argument table */
485struct redisCommandArg CLUSTER_MEET_Args[] = {
486{"ip",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
487{"port",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
488{"cluster_bus_port",ARG_TYPE_INTEGER,-1,NULL,NULL,"4.0.0",CMD_ARG_OPTIONAL},
489{0}
490};
491
492/********** CLUSTER MYID ********************/
493
494/* CLUSTER MYID history */
495#define CLUSTER_MYID_History NULL
496
497/* CLUSTER MYID tips */
498const char *CLUSTER_MYID_tips[] = {
499"nondeterministic_output",
500NULL
501};
502
503/********** CLUSTER NODES ********************/
504
505/* CLUSTER NODES history */
506#define CLUSTER_NODES_History NULL
507
508/* CLUSTER NODES tips */
509const char *CLUSTER_NODES_tips[] = {
510"nondeterministic_output",
511NULL
512};
513
514/********** CLUSTER REPLICAS ********************/
515
516/* CLUSTER REPLICAS history */
517#define CLUSTER_REPLICAS_History NULL
518
519/* CLUSTER REPLICAS tips */
520const char *CLUSTER_REPLICAS_tips[] = {
521"nondeterministic_output",
522NULL
523};
524
525/* CLUSTER REPLICAS argument table */
526struct redisCommandArg CLUSTER_REPLICAS_Args[] = {
527{"node-id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
528{0}
529};
530
531/********** CLUSTER REPLICATE ********************/
532
533/* CLUSTER REPLICATE history */
534#define CLUSTER_REPLICATE_History NULL
535
536/* CLUSTER REPLICATE tips */
537const char *CLUSTER_REPLICATE_tips[] = {
538"nondeterministic_output",
539NULL
540};
541
542/* CLUSTER REPLICATE argument table */
543struct redisCommandArg CLUSTER_REPLICATE_Args[] = {
544{"node-id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
545{0}
546};
547
548/********** CLUSTER RESET ********************/
549
550/* CLUSTER RESET history */
551#define CLUSTER_RESET_History NULL
552
553/* CLUSTER RESET tips */
554const char *CLUSTER_RESET_tips[] = {
555"nondeterministic_output",
556NULL
557};
558
559/* CLUSTER RESET hard_soft argument table */
560struct redisCommandArg CLUSTER_RESET_hard_soft_Subargs[] = {
561{"hard",ARG_TYPE_PURE_TOKEN,-1,"HARD",NULL,NULL,CMD_ARG_NONE},
562{"soft",ARG_TYPE_PURE_TOKEN,-1,"SOFT",NULL,NULL,CMD_ARG_NONE},
563{0}
564};
565
566/* CLUSTER RESET argument table */
567struct redisCommandArg CLUSTER_RESET_Args[] = {
568{"hard_soft",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=CLUSTER_RESET_hard_soft_Subargs},
569{0}
570};
571
572/********** CLUSTER SAVECONFIG ********************/
573
574/* CLUSTER SAVECONFIG history */
575#define CLUSTER_SAVECONFIG_History NULL
576
577/* CLUSTER SAVECONFIG tips */
578const char *CLUSTER_SAVECONFIG_tips[] = {
579"nondeterministic_output",
580NULL
581};
582
583/********** CLUSTER SET_CONFIG_EPOCH ********************/
584
585/* CLUSTER SET_CONFIG_EPOCH history */
586#define CLUSTER_SET_CONFIG_EPOCH_History NULL
587
588/* CLUSTER SET_CONFIG_EPOCH tips */
589const char *CLUSTER_SET_CONFIG_EPOCH_tips[] = {
590"nondeterministic_output",
591NULL
592};
593
594/* CLUSTER SET_CONFIG_EPOCH argument table */
595struct redisCommandArg CLUSTER_SET_CONFIG_EPOCH_Args[] = {
596{"config-epoch",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
597{0}
598};
599
600/********** CLUSTER SETSLOT ********************/
601
602/* CLUSTER SETSLOT history */
603#define CLUSTER_SETSLOT_History NULL
604
605/* CLUSTER SETSLOT tips */
606const char *CLUSTER_SETSLOT_tips[] = {
607"nondeterministic_output",
608NULL
609};
610
611/* CLUSTER SETSLOT subcommand argument table */
612struct redisCommandArg CLUSTER_SETSLOT_subcommand_Subargs[] = {
613{"node-id",ARG_TYPE_STRING,-1,"IMPORTING",NULL,NULL,CMD_ARG_NONE},
614{"node-id",ARG_TYPE_STRING,-1,"MIGRATING",NULL,NULL,CMD_ARG_NONE},
615{"node-id",ARG_TYPE_STRING,-1,"NODE",NULL,NULL,CMD_ARG_NONE},
616{"stable",ARG_TYPE_PURE_TOKEN,-1,"STABLE",NULL,NULL,CMD_ARG_NONE},
617{0}
618};
619
620/* CLUSTER SETSLOT argument table */
621struct redisCommandArg CLUSTER_SETSLOT_Args[] = {
622{"slot",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
623{"subcommand",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=CLUSTER_SETSLOT_subcommand_Subargs},
624{0}
625};
626
627/********** CLUSTER SHARDS ********************/
628
629/* CLUSTER SHARDS history */
630#define CLUSTER_SHARDS_History NULL
631
632/* CLUSTER SHARDS tips */
633const char *CLUSTER_SHARDS_tips[] = {
634"nondeterministic_output",
635NULL
636};
637
638/********** CLUSTER SLAVES ********************/
639
640/* CLUSTER SLAVES history */
641#define CLUSTER_SLAVES_History NULL
642
643/* CLUSTER SLAVES tips */
644const char *CLUSTER_SLAVES_tips[] = {
645"nondeterministic_output",
646NULL
647};
648
649/* CLUSTER SLAVES argument table */
650struct redisCommandArg CLUSTER_SLAVES_Args[] = {
651{"node-id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
652{0}
653};
654
655/********** CLUSTER SLOTS ********************/
656
657/* CLUSTER SLOTS history */
658commandHistory CLUSTER_SLOTS_History[] = {
659{"4.0.0","Added node IDs."},
660{"7.0.0","Added additional networking metadata field."},
661{0}
662};
663
664/* CLUSTER SLOTS tips */
665const char *CLUSTER_SLOTS_tips[] = {
666"nondeterministic_output",
667NULL
668};
669
670/* CLUSTER command table */
671struct redisCommand CLUSTER_Subcommands[] = {
672{"addslots","Assign new hash slots to receiving node","O(N) where N is the total number of hash slot arguments","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_ADDSLOTS_History,CLUSTER_ADDSLOTS_tips,clusterCommand,-3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_ADDSLOTS_Args},
673{"addslotsrange","Assign new hash slots to receiving node","O(N) where N is the total number of the slots between the start slot and end slot arguments.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_ADDSLOTSRANGE_History,CLUSTER_ADDSLOTSRANGE_tips,clusterCommand,-4,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_ADDSLOTSRANGE_Args},
674{"bumpepoch","Advance the cluster config epoch","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_BUMPEPOCH_History,CLUSTER_BUMPEPOCH_tips,clusterCommand,2,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0},
675{"count-failure-reports","Return the number of failure reports active for a given node","O(N) where N is the number of failure reports","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_COUNT_FAILURE_REPORTS_History,CLUSTER_COUNT_FAILURE_REPORTS_tips,clusterCommand,3,CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_COUNT_FAILURE_REPORTS_Args},
676{"countkeysinslot","Return the number of local keys in the specified hash slot","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_COUNTKEYSINSLOT_History,CLUSTER_COUNTKEYSINSLOT_tips,clusterCommand,3,CMD_STALE,0,.args=CLUSTER_COUNTKEYSINSLOT_Args},
677{"delslots","Set hash slots as unbound in receiving node","O(N) where N is the total number of hash slot arguments","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_DELSLOTS_History,CLUSTER_DELSLOTS_tips,clusterCommand,-3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_DELSLOTS_Args},
678{"delslotsrange","Set hash slots as unbound in receiving node","O(N) where N is the total number of the slots between the start slot and end slot arguments.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_DELSLOTSRANGE_History,CLUSTER_DELSLOTSRANGE_tips,clusterCommand,-4,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_DELSLOTSRANGE_Args},
679{"failover","Forces a replica to perform a manual failover of its master.","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_FAILOVER_History,CLUSTER_FAILOVER_tips,clusterCommand,-2,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_FAILOVER_Args},
680{"flushslots","Delete a node's own slots information","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_FLUSHSLOTS_History,CLUSTER_FLUSHSLOTS_tips,clusterCommand,2,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0},
681{"forget","Remove a node from the nodes table","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_FORGET_History,CLUSTER_FORGET_tips,clusterCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_FORGET_Args},
682{"getkeysinslot","Return local key names in the specified hash slot","O(log(N)) where N is the number of requested keys","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_GETKEYSINSLOT_History,CLUSTER_GETKEYSINSLOT_tips,clusterCommand,4,CMD_STALE,0,.args=CLUSTER_GETKEYSINSLOT_Args},
683{"help","Show helpful text about the different subcommands","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_HELP_History,CLUSTER_HELP_tips,clusterCommand,2,CMD_LOADING|CMD_STALE,0},
684{"info","Provides info about Redis Cluster node state","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_INFO_History,CLUSTER_INFO_tips,clusterCommand,2,CMD_STALE,0},
685{"keyslot","Returns the hash slot of the specified key","O(N) where N is the number of bytes in the key","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_KEYSLOT_History,CLUSTER_KEYSLOT_tips,clusterCommand,3,CMD_STALE,0,.args=CLUSTER_KEYSLOT_Args},
686{"links","Returns a list of all TCP links to and from peer nodes in cluster","O(N) where N is the total number of Cluster nodes","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_LINKS_History,CLUSTER_LINKS_tips,clusterCommand,2,CMD_STALE,0},
687{"meet","Force a node cluster to handshake with another node","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_MEET_History,CLUSTER_MEET_tips,clusterCommand,-4,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_MEET_Args},
688{"myid","Return the node id","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_MYID_History,CLUSTER_MYID_tips,clusterCommand,2,CMD_STALE,0},
689{"nodes","Get Cluster config for the node","O(N) where N is the total number of Cluster nodes","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_NODES_History,CLUSTER_NODES_tips,clusterCommand,2,CMD_STALE,0},
690{"replicas","List replica nodes of the specified master node","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_REPLICAS_History,CLUSTER_REPLICAS_tips,clusterCommand,3,CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_REPLICAS_Args},
691{"replicate","Reconfigure a node as a replica of the specified master node","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_REPLICATE_History,CLUSTER_REPLICATE_tips,clusterCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_REPLICATE_Args},
692{"reset","Reset a Redis Cluster node","O(N) where N is the number of known nodes. The command may execute a FLUSHALL as a side effect.","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_RESET_History,CLUSTER_RESET_tips,clusterCommand,-2,CMD_ADMIN|CMD_STALE|CMD_NOSCRIPT,0,.args=CLUSTER_RESET_Args},
693{"saveconfig","Forces the node to save cluster state on disk","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_SAVECONFIG_History,CLUSTER_SAVECONFIG_tips,clusterCommand,2,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0},
694{"set-config-epoch","Set the configuration epoch in a new node","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_SET_CONFIG_EPOCH_History,CLUSTER_SET_CONFIG_EPOCH_tips,clusterCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_SET_CONFIG_EPOCH_Args},
695{"setslot","Bind a hash slot to a specific node","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_SETSLOT_History,CLUSTER_SETSLOT_tips,clusterCommand,-4,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_SETSLOT_Args},
696{"shards","Get array of cluster slots to node mappings","O(N) where N is the total number of cluster nodes","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_SHARDS_History,CLUSTER_SHARDS_tips,clusterCommand,2,CMD_STALE,0},
697{"slaves","List replica nodes of the specified master node","O(1)","3.0.0",CMD_DOC_DEPRECATED,"`CLUSTER REPLICAS`","5.0.0",COMMAND_GROUP_CLUSTER,CLUSTER_SLAVES_History,CLUSTER_SLAVES_tips,clusterCommand,3,CMD_ADMIN|CMD_STALE,0,.args=CLUSTER_SLAVES_Args},
698{"slots","Get array of Cluster slot to node mappings","O(N) where N is the total number of Cluster nodes","3.0.0",CMD_DOC_DEPRECATED,"`CLUSTER SHARDS`","7.0.0",COMMAND_GROUP_CLUSTER,CLUSTER_SLOTS_History,CLUSTER_SLOTS_tips,clusterCommand,2,CMD_STALE,0},
699{0}
700};
701
702/********** CLUSTER ********************/
703
704/* CLUSTER history */
705#define CLUSTER_History NULL
706
707/* CLUSTER tips */
708#define CLUSTER_tips NULL
709
710/********** READONLY ********************/
711
712/* READONLY history */
713#define READONLY_History NULL
714
715/* READONLY tips */
716#define READONLY_tips NULL
717
718/********** READWRITE ********************/
719
720/* READWRITE history */
721#define READWRITE_History NULL
722
723/* READWRITE tips */
724#define READWRITE_tips NULL
725
726/********** AUTH ********************/
727
728/* AUTH history */
729commandHistory AUTH_History[] = {
730{"6.0.0","Added ACL style (username and password)."},
731{0}
732};
733
734/* AUTH tips */
735#define AUTH_tips NULL
736
737/* AUTH argument table */
738struct redisCommandArg AUTH_Args[] = {
739{"username",ARG_TYPE_STRING,-1,NULL,NULL,"6.0.0",CMD_ARG_OPTIONAL},
740{"password",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
741{0}
742};
743
744/********** CLIENT CACHING ********************/
745
746/* CLIENT CACHING history */
747#define CLIENT_CACHING_History NULL
748
749/* CLIENT CACHING tips */
750#define CLIENT_CACHING_tips NULL
751
752/* CLIENT CACHING mode argument table */
753struct redisCommandArg CLIENT_CACHING_mode_Subargs[] = {
754{"yes",ARG_TYPE_PURE_TOKEN,-1,"YES",NULL,NULL,CMD_ARG_NONE},
755{"no",ARG_TYPE_PURE_TOKEN,-1,"NO",NULL,NULL,CMD_ARG_NONE},
756{0}
757};
758
759/* CLIENT CACHING argument table */
760struct redisCommandArg CLIENT_CACHING_Args[] = {
761{"mode",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=CLIENT_CACHING_mode_Subargs},
762{0}
763};
764
765/********** CLIENT GETNAME ********************/
766
767/* CLIENT GETNAME history */
768#define CLIENT_GETNAME_History NULL
769
770/* CLIENT GETNAME tips */
771#define CLIENT_GETNAME_tips NULL
772
773/********** CLIENT GETREDIR ********************/
774
775/* CLIENT GETREDIR history */
776#define CLIENT_GETREDIR_History NULL
777
778/* CLIENT GETREDIR tips */
779#define CLIENT_GETREDIR_tips NULL
780
781/********** CLIENT HELP ********************/
782
783/* CLIENT HELP history */
784#define CLIENT_HELP_History NULL
785
786/* CLIENT HELP tips */
787#define CLIENT_HELP_tips NULL
788
789/********** CLIENT ID ********************/
790
791/* CLIENT ID history */
792#define CLIENT_ID_History NULL
793
794/* CLIENT ID tips */
795#define CLIENT_ID_tips NULL
796
797/********** CLIENT INFO ********************/
798
799/* CLIENT INFO history */
800#define CLIENT_INFO_History NULL
801
802/* CLIENT INFO tips */
803const char *CLIENT_INFO_tips[] = {
804"nondeterministic_output",
805NULL
806};
807
808/********** CLIENT KILL ********************/
809
810/* CLIENT KILL history */
811commandHistory CLIENT_KILL_History[] = {
812{"2.8.12","Added new filter format."},
813{"2.8.12","`ID` option."},
814{"3.2.0","Added `master` type in for `TYPE` option."},
815{"5.0.0","Replaced `slave` `TYPE` with `replica`. `slave` still supported for backward compatibility."},
816{"6.2.0","`LADDR` option."},
817{0}
818};
819
820/* CLIENT KILL tips */
821#define CLIENT_KILL_tips NULL
822
823/* CLIENT KILL normal_master_slave_pubsub argument table */
824struct redisCommandArg CLIENT_KILL_normal_master_slave_pubsub_Subargs[] = {
825{"normal",ARG_TYPE_PURE_TOKEN,-1,"NORMAL",NULL,NULL,CMD_ARG_NONE},
826{"master",ARG_TYPE_PURE_TOKEN,-1,"MASTER",NULL,"3.2.0",CMD_ARG_NONE},
827{"slave",ARG_TYPE_PURE_TOKEN,-1,"SLAVE",NULL,NULL,CMD_ARG_NONE},
828{"replica",ARG_TYPE_PURE_TOKEN,-1,"REPLICA",NULL,"5.0.0",CMD_ARG_NONE},
829{"pubsub",ARG_TYPE_PURE_TOKEN,-1,"PUBSUB",NULL,NULL,CMD_ARG_NONE},
830{0}
831};
832
833/* CLIENT KILL argument table */
834struct redisCommandArg CLIENT_KILL_Args[] = {
835{"ip:port",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL},
836{"client-id",ARG_TYPE_INTEGER,-1,"ID",NULL,"2.8.12",CMD_ARG_OPTIONAL},
837{"normal_master_slave_pubsub",ARG_TYPE_ONEOF,-1,"TYPE",NULL,"2.8.12",CMD_ARG_OPTIONAL,.subargs=CLIENT_KILL_normal_master_slave_pubsub_Subargs},
838{"username",ARG_TYPE_STRING,-1,"USER",NULL,NULL,CMD_ARG_OPTIONAL},
839{"ip:port",ARG_TYPE_STRING,-1,"ADDR",NULL,NULL,CMD_ARG_OPTIONAL},
840{"ip:port",ARG_TYPE_STRING,-1,"LADDR",NULL,"6.2.0",CMD_ARG_OPTIONAL},
841{"yes/no",ARG_TYPE_STRING,-1,"SKIPME",NULL,NULL,CMD_ARG_OPTIONAL},
842{0}
843};
844
845/********** CLIENT LIST ********************/
846
847/* CLIENT LIST history */
848commandHistory CLIENT_LIST_History[] = {
849{"2.8.12","Added unique client `id` field."},
850{"5.0.0","Added optional `TYPE` filter."},
851{"6.2.0","Added `laddr` field and the optional `ID` filter."},
852{0}
853};
854
855/* CLIENT LIST tips */
856const char *CLIENT_LIST_tips[] = {
857"nondeterministic_output",
858NULL
859};
860
861/* CLIENT LIST normal_master_replica_pubsub argument table */
862struct redisCommandArg CLIENT_LIST_normal_master_replica_pubsub_Subargs[] = {
863{"normal",ARG_TYPE_PURE_TOKEN,-1,"NORMAL",NULL,NULL,CMD_ARG_NONE},
864{"master",ARG_TYPE_PURE_TOKEN,-1,"MASTER",NULL,NULL,CMD_ARG_NONE},
865{"replica",ARG_TYPE_PURE_TOKEN,-1,"REPLICA",NULL,NULL,CMD_ARG_NONE},
866{"pubsub",ARG_TYPE_PURE_TOKEN,-1,"PUBSUB",NULL,NULL,CMD_ARG_NONE},
867{0}
868};
869
870/* CLIENT LIST id argument table */
871struct redisCommandArg CLIENT_LIST_id_Subargs[] = {
872{"client-id",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
873{0}
874};
875
876/* CLIENT LIST argument table */
877struct redisCommandArg CLIENT_LIST_Args[] = {
878{"normal_master_replica_pubsub",ARG_TYPE_ONEOF,-1,"TYPE",NULL,"5.0.0",CMD_ARG_OPTIONAL,.subargs=CLIENT_LIST_normal_master_replica_pubsub_Subargs},
879{"id",ARG_TYPE_BLOCK,-1,"ID",NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=CLIENT_LIST_id_Subargs},
880{0}
881};
882
883/********** CLIENT NO_EVICT ********************/
884
885/* CLIENT NO_EVICT history */
886#define CLIENT_NO_EVICT_History NULL
887
888/* CLIENT NO_EVICT tips */
889#define CLIENT_NO_EVICT_tips NULL
890
891/* CLIENT NO_EVICT enabled argument table */
892struct redisCommandArg CLIENT_NO_EVICT_enabled_Subargs[] = {
893{"on",ARG_TYPE_PURE_TOKEN,-1,"ON",NULL,NULL,CMD_ARG_NONE},
894{"off",ARG_TYPE_PURE_TOKEN,-1,"OFF",NULL,NULL,CMD_ARG_NONE},
895{0}
896};
897
898/* CLIENT NO_EVICT argument table */
899struct redisCommandArg CLIENT_NO_EVICT_Args[] = {
900{"enabled",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=CLIENT_NO_EVICT_enabled_Subargs},
901{0}
902};
903
904/********** CLIENT PAUSE ********************/
905
906/* CLIENT PAUSE history */
907commandHistory CLIENT_PAUSE_History[] = {
908{"6.2.0","`CLIENT PAUSE WRITE` mode added along with the `mode` option."},
909{0}
910};
911
912/* CLIENT PAUSE tips */
913#define CLIENT_PAUSE_tips NULL
914
915/* CLIENT PAUSE mode argument table */
916struct redisCommandArg CLIENT_PAUSE_mode_Subargs[] = {
917{"write",ARG_TYPE_PURE_TOKEN,-1,"WRITE",NULL,NULL,CMD_ARG_NONE},
918{"all",ARG_TYPE_PURE_TOKEN,-1,"ALL",NULL,NULL,CMD_ARG_NONE},
919{0}
920};
921
922/* CLIENT PAUSE argument table */
923struct redisCommandArg CLIENT_PAUSE_Args[] = {
924{"timeout",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
925{"mode",ARG_TYPE_ONEOF,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=CLIENT_PAUSE_mode_Subargs},
926{0}
927};
928
929/********** CLIENT REPLY ********************/
930
931/* CLIENT REPLY history */
932#define CLIENT_REPLY_History NULL
933
934/* CLIENT REPLY tips */
935#define CLIENT_REPLY_tips NULL
936
937/* CLIENT REPLY on_off_skip argument table */
938struct redisCommandArg CLIENT_REPLY_on_off_skip_Subargs[] = {
939{"on",ARG_TYPE_PURE_TOKEN,-1,"ON",NULL,NULL,CMD_ARG_NONE},
940{"off",ARG_TYPE_PURE_TOKEN,-1,"OFF",NULL,NULL,CMD_ARG_NONE},
941{"skip",ARG_TYPE_PURE_TOKEN,-1,"SKIP",NULL,NULL,CMD_ARG_NONE},
942{0}
943};
944
945/* CLIENT REPLY argument table */
946struct redisCommandArg CLIENT_REPLY_Args[] = {
947{"on_off_skip",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=CLIENT_REPLY_on_off_skip_Subargs},
948{0}
949};
950
951/********** CLIENT SETNAME ********************/
952
953/* CLIENT SETNAME history */
954#define CLIENT_SETNAME_History NULL
955
956/* CLIENT SETNAME tips */
957#define CLIENT_SETNAME_tips NULL
958
959/* CLIENT SETNAME argument table */
960struct redisCommandArg CLIENT_SETNAME_Args[] = {
961{"connection-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
962{0}
963};
964
965/********** CLIENT TRACKING ********************/
966
967/* CLIENT TRACKING history */
968#define CLIENT_TRACKING_History NULL
969
970/* CLIENT TRACKING tips */
971#define CLIENT_TRACKING_tips NULL
972
973/* CLIENT TRACKING status argument table */
974struct redisCommandArg CLIENT_TRACKING_status_Subargs[] = {
975{"on",ARG_TYPE_PURE_TOKEN,-1,"ON",NULL,NULL,CMD_ARG_NONE},
976{"off",ARG_TYPE_PURE_TOKEN,-1,"OFF",NULL,NULL,CMD_ARG_NONE},
977{0}
978};
979
980/* CLIENT TRACKING argument table */
981struct redisCommandArg CLIENT_TRACKING_Args[] = {
982{"status",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=CLIENT_TRACKING_status_Subargs},
983{"client-id",ARG_TYPE_INTEGER,-1,"REDIRECT",NULL,NULL,CMD_ARG_OPTIONAL},
984{"prefix",ARG_TYPE_STRING,-1,"PREFIX",NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE|CMD_ARG_MULTIPLE_TOKEN},
985{"bcast",ARG_TYPE_PURE_TOKEN,-1,"BCAST",NULL,NULL,CMD_ARG_OPTIONAL},
986{"optin",ARG_TYPE_PURE_TOKEN,-1,"OPTIN",NULL,NULL,CMD_ARG_OPTIONAL},
987{"optout",ARG_TYPE_PURE_TOKEN,-1,"OPTOUT",NULL,NULL,CMD_ARG_OPTIONAL},
988{"noloop",ARG_TYPE_PURE_TOKEN,-1,"NOLOOP",NULL,NULL,CMD_ARG_OPTIONAL},
989{0}
990};
991
992/********** CLIENT TRACKINGINFO ********************/
993
994/* CLIENT TRACKINGINFO history */
995#define CLIENT_TRACKINGINFO_History NULL
996
997/* CLIENT TRACKINGINFO tips */
998#define CLIENT_TRACKINGINFO_tips NULL
999
1000/********** CLIENT UNBLOCK ********************/
1001
1002/* CLIENT UNBLOCK history */
1003#define CLIENT_UNBLOCK_History NULL
1004
1005/* CLIENT UNBLOCK tips */
1006#define CLIENT_UNBLOCK_tips NULL
1007
1008/* CLIENT UNBLOCK timeout_error argument table */
1009struct redisCommandArg CLIENT_UNBLOCK_timeout_error_Subargs[] = {
1010{"timeout",ARG_TYPE_PURE_TOKEN,-1,"TIMEOUT",NULL,NULL,CMD_ARG_NONE},
1011{"error",ARG_TYPE_PURE_TOKEN,-1,"ERROR",NULL,NULL,CMD_ARG_NONE},
1012{0}
1013};
1014
1015/* CLIENT UNBLOCK argument table */
1016struct redisCommandArg CLIENT_UNBLOCK_Args[] = {
1017{"client-id",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1018{"timeout_error",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=CLIENT_UNBLOCK_timeout_error_Subargs},
1019{0}
1020};
1021
1022/********** CLIENT UNPAUSE ********************/
1023
1024/* CLIENT UNPAUSE history */
1025#define CLIENT_UNPAUSE_History NULL
1026
1027/* CLIENT UNPAUSE tips */
1028#define CLIENT_UNPAUSE_tips NULL
1029
1030/* CLIENT command table */
1031struct redisCommand CLIENT_Subcommands[] = {
1032{"caching","Instruct the server about tracking or not keys in the next request","O(1)","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_CACHING_History,CLIENT_CACHING_tips,clientCommand,3,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=CLIENT_CACHING_Args},
1033{"getname","Get the current connection name","O(1)","2.6.9",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_GETNAME_History,CLIENT_GETNAME_tips,clientCommand,2,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION},
1034{"getredir","Get tracking notifications redirection client ID if any","O(1)","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_GETREDIR_History,CLIENT_GETREDIR_tips,clientCommand,2,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION},
1035{"help","Show helpful text about the different subcommands","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_HELP_History,CLIENT_HELP_tips,clientCommand,2,CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION},
1036{"id","Returns the client ID for the current connection","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_ID_History,CLIENT_ID_tips,clientCommand,2,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION},
1037{"info","Returns information about the current client connection.","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_INFO_History,CLIENT_INFO_tips,clientCommand,2,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION},
1038{"kill","Kill the connection of a client","O(N) where N is the number of client connections","2.4.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_KILL_History,CLIENT_KILL_tips,clientCommand,-3,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=CLIENT_KILL_Args},
1039{"list","Get the list of client connections","O(N) where N is the number of client connections","2.4.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_LIST_History,CLIENT_LIST_tips,clientCommand,-2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=CLIENT_LIST_Args},
1040{"no-evict","Set client eviction mode for the current connection","O(1)","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_NO_EVICT_History,CLIENT_NO_EVICT_tips,clientCommand,3,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=CLIENT_NO_EVICT_Args},
1041{"pause","Stop processing commands from clients for some time","O(1)","2.9.50",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_PAUSE_History,CLIENT_PAUSE_tips,clientCommand,-3,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=CLIENT_PAUSE_Args},
1042{"reply","Instruct the server whether to reply to commands","O(1)","3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_REPLY_History,CLIENT_REPLY_tips,clientCommand,3,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=CLIENT_REPLY_Args},
1043{"setname","Set the current connection name","O(1)","2.6.9",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_SETNAME_History,CLIENT_SETNAME_tips,clientCommand,3,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=CLIENT_SETNAME_Args},
1044{"tracking","Enable or disable server assisted client side caching support","O(1). Some options may introduce additional complexity.","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_TRACKING_History,CLIENT_TRACKING_tips,clientCommand,-3,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=CLIENT_TRACKING_Args},
1045{"trackinginfo","Return information about server assisted client side caching for the current connection","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_TRACKINGINFO_History,CLIENT_TRACKINGINFO_tips,clientCommand,2,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION},
1046{"unblock","Unblock a client blocked in a blocking command from a different connection","O(log N) where N is the number of client connections","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_UNBLOCK_History,CLIENT_UNBLOCK_tips,clientCommand,-3,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=CLIENT_UNBLOCK_Args},
1047{"unpause","Resume processing of clients that were paused","O(N) Where N is the number of paused clients","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_UNPAUSE_History,CLIENT_UNPAUSE_tips,clientCommand,2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION},
1048{0}
1049};
1050
1051/********** CLIENT ********************/
1052
1053/* CLIENT history */
1054#define CLIENT_History NULL
1055
1056/* CLIENT tips */
1057#define CLIENT_tips NULL
1058
1059/********** ECHO ********************/
1060
1061/* ECHO history */
1062#define ECHO_History NULL
1063
1064/* ECHO tips */
1065#define ECHO_tips NULL
1066
1067/* ECHO argument table */
1068struct redisCommandArg ECHO_Args[] = {
1069{"message",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1070{0}
1071};
1072
1073/********** HELLO ********************/
1074
1075/* HELLO history */
1076commandHistory HELLO_History[] = {
1077{"6.2.0","`protover` made optional; when called without arguments the command reports the current connection's context."},
1078{0}
1079};
1080
1081/* HELLO tips */
1082#define HELLO_tips NULL
1083
1084/* HELLO arguments username_password argument table */
1085struct redisCommandArg HELLO_arguments_username_password_Subargs[] = {
1086{"username",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1087{"password",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1088{0}
1089};
1090
1091/* HELLO arguments argument table */
1092struct redisCommandArg HELLO_arguments_Subargs[] = {
1093{"protover",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1094{"username_password",ARG_TYPE_BLOCK,-1,"AUTH",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=HELLO_arguments_username_password_Subargs},
1095{"clientname",ARG_TYPE_STRING,-1,"SETNAME",NULL,NULL,CMD_ARG_OPTIONAL},
1096{0}
1097};
1098
1099/* HELLO argument table */
1100struct redisCommandArg HELLO_Args[] = {
1101{"arguments",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=HELLO_arguments_Subargs},
1102{0}
1103};
1104
1105/********** PING ********************/
1106
1107/* PING history */
1108#define PING_History NULL
1109
1110/* PING tips */
1111const char *PING_tips[] = {
1112"request_policy:all_shards",
1113"response_policy:all_succeeded",
1114NULL
1115};
1116
1117/* PING argument table */
1118struct redisCommandArg PING_Args[] = {
1119{"message",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL},
1120{0}
1121};
1122
1123/********** QUIT ********************/
1124
1125/* QUIT history */
1126#define QUIT_History NULL
1127
1128/* QUIT tips */
1129#define QUIT_tips NULL
1130
1131/********** RESET ********************/
1132
1133/* RESET history */
1134#define RESET_History NULL
1135
1136/* RESET tips */
1137#define RESET_tips NULL
1138
1139/********** SELECT ********************/
1140
1141/* SELECT history */
1142#define SELECT_History NULL
1143
1144/* SELECT tips */
1145#define SELECT_tips NULL
1146
1147/* SELECT argument table */
1148struct redisCommandArg SELECT_Args[] = {
1149{"index",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1150{0}
1151};
1152
1153/********** COPY ********************/
1154
1155/* COPY history */
1156#define COPY_History NULL
1157
1158/* COPY tips */
1159#define COPY_tips NULL
1160
1161/* COPY argument table */
1162struct redisCommandArg COPY_Args[] = {
1163{"source",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1164{"destination",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_NONE},
1165{"destination-db",ARG_TYPE_INTEGER,-1,"DB",NULL,NULL,CMD_ARG_OPTIONAL},
1166{"replace",ARG_TYPE_PURE_TOKEN,-1,"REPLACE",NULL,NULL,CMD_ARG_OPTIONAL},
1167{0}
1168};
1169
1170/********** DEL ********************/
1171
1172/* DEL history */
1173#define DEL_History NULL
1174
1175/* DEL tips */
1176const char *DEL_tips[] = {
1177"request_policy:multi_shard",
1178"response_policy:agg_sum",
1179NULL
1180};
1181
1182/* DEL argument table */
1183struct redisCommandArg DEL_Args[] = {
1184{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
1185{0}
1186};
1187
1188/********** DUMP ********************/
1189
1190/* DUMP history */
1191#define DUMP_History NULL
1192
1193/* DUMP tips */
1194const char *DUMP_tips[] = {
1195"nondeterministic_output",
1196NULL
1197};
1198
1199/* DUMP argument table */
1200struct redisCommandArg DUMP_Args[] = {
1201{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1202{0}
1203};
1204
1205/********** EXISTS ********************/
1206
1207/* EXISTS history */
1208commandHistory EXISTS_History[] = {
1209{"3.0.3","Accepts multiple `key` arguments."},
1210{0}
1211};
1212
1213/* EXISTS tips */
1214const char *EXISTS_tips[] = {
1215"request_policy:multi_shard",
1216"response_policy:agg_sum",
1217NULL
1218};
1219
1220/* EXISTS argument table */
1221struct redisCommandArg EXISTS_Args[] = {
1222{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
1223{0}
1224};
1225
1226/********** EXPIRE ********************/
1227
1228/* EXPIRE history */
1229commandHistory EXPIRE_History[] = {
1230{"7.0.0","Added options: `NX`, `XX`, `GT` and `LT`."},
1231{0}
1232};
1233
1234/* EXPIRE tips */
1235#define EXPIRE_tips NULL
1236
1237/* EXPIRE condition argument table */
1238struct redisCommandArg EXPIRE_condition_Subargs[] = {
1239{"nx",ARG_TYPE_PURE_TOKEN,-1,"NX",NULL,NULL,CMD_ARG_NONE},
1240{"xx",ARG_TYPE_PURE_TOKEN,-1,"XX",NULL,NULL,CMD_ARG_NONE},
1241{"gt",ARG_TYPE_PURE_TOKEN,-1,"GT",NULL,NULL,CMD_ARG_NONE},
1242{"lt",ARG_TYPE_PURE_TOKEN,-1,"LT",NULL,NULL,CMD_ARG_NONE},
1243{0}
1244};
1245
1246/* EXPIRE argument table */
1247struct redisCommandArg EXPIRE_Args[] = {
1248{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1249{"seconds",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1250{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=EXPIRE_condition_Subargs},
1251{0}
1252};
1253
1254/********** EXPIREAT ********************/
1255
1256/* EXPIREAT history */
1257commandHistory EXPIREAT_History[] = {
1258{"7.0.0","Added options: `NX`, `XX`, `GT` and `LT`."},
1259{0}
1260};
1261
1262/* EXPIREAT tips */
1263#define EXPIREAT_tips NULL
1264
1265/* EXPIREAT condition argument table */
1266struct redisCommandArg EXPIREAT_condition_Subargs[] = {
1267{"nx",ARG_TYPE_PURE_TOKEN,-1,"NX",NULL,NULL,CMD_ARG_NONE},
1268{"xx",ARG_TYPE_PURE_TOKEN,-1,"XX",NULL,NULL,CMD_ARG_NONE},
1269{"gt",ARG_TYPE_PURE_TOKEN,-1,"GT",NULL,NULL,CMD_ARG_NONE},
1270{"lt",ARG_TYPE_PURE_TOKEN,-1,"LT",NULL,NULL,CMD_ARG_NONE},
1271{0}
1272};
1273
1274/* EXPIREAT argument table */
1275struct redisCommandArg EXPIREAT_Args[] = {
1276{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1277{"unix-time-seconds",ARG_TYPE_UNIX_TIME,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1278{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=EXPIREAT_condition_Subargs},
1279{0}
1280};
1281
1282/********** EXPIRETIME ********************/
1283
1284/* EXPIRETIME history */
1285#define EXPIRETIME_History NULL
1286
1287/* EXPIRETIME tips */
1288#define EXPIRETIME_tips NULL
1289
1290/* EXPIRETIME argument table */
1291struct redisCommandArg EXPIRETIME_Args[] = {
1292{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1293{0}
1294};
1295
1296/********** KEYS ********************/
1297
1298/* KEYS history */
1299#define KEYS_History NULL
1300
1301/* KEYS tips */
1302const char *KEYS_tips[] = {
1303"request_policy:all_shards",
1304"nondeterministic_output_order",
1305NULL
1306};
1307
1308/* KEYS argument table */
1309struct redisCommandArg KEYS_Args[] = {
1310{"pattern",ARG_TYPE_PATTERN,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1311{0}
1312};
1313
1314/********** MIGRATE ********************/
1315
1316/* MIGRATE history */
1317commandHistory MIGRATE_History[] = {
1318{"3.0.0","Added the `COPY` and `REPLACE` options."},
1319{"3.0.6","Added the `KEYS` option."},
1320{"4.0.7","Added the `AUTH` option."},
1321{"6.0.0","Added the `AUTH2` option."},
1322{0}
1323};
1324
1325/* MIGRATE tips */
1326const char *MIGRATE_tips[] = {
1327"nondeterministic_output",
1328NULL
1329};
1330
1331/* MIGRATE key_or_empty_string argument table */
1332struct redisCommandArg MIGRATE_key_or_empty_string_Subargs[] = {
1333{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1334{"empty_string",ARG_TYPE_PURE_TOKEN,-1,"""",NULL,NULL,CMD_ARG_NONE},
1335{0}
1336};
1337
1338/* MIGRATE authentication username_password argument table */
1339struct redisCommandArg MIGRATE_authentication_username_password_Subargs[] = {
1340{"username",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1341{"password",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1342{0}
1343};
1344
1345/* MIGRATE authentication argument table */
1346struct redisCommandArg MIGRATE_authentication_Subargs[] = {
1347{"password",ARG_TYPE_STRING,-1,"AUTH",NULL,"4.0.7",CMD_ARG_OPTIONAL},
1348{"username_password",ARG_TYPE_BLOCK,-1,"AUTH2",NULL,"6.0.0",CMD_ARG_OPTIONAL,.subargs=MIGRATE_authentication_username_password_Subargs},
1349{0}
1350};
1351
1352/* MIGRATE argument table */
1353struct redisCommandArg MIGRATE_Args[] = {
1354{"host",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1355{"port",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1356{"key_or_empty_string",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=MIGRATE_key_or_empty_string_Subargs},
1357{"destination-db",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1358{"timeout",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1359{"copy",ARG_TYPE_PURE_TOKEN,-1,"COPY",NULL,"3.0.0",CMD_ARG_OPTIONAL},
1360{"replace",ARG_TYPE_PURE_TOKEN,-1,"REPLACE",NULL,"3.0.0",CMD_ARG_OPTIONAL},
1361{"authentication",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=MIGRATE_authentication_Subargs},
1362{"key",ARG_TYPE_KEY,1,"KEYS",NULL,"3.0.6",CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
1363{0}
1364};
1365
1366/********** MOVE ********************/
1367
1368/* MOVE history */
1369#define MOVE_History NULL
1370
1371/* MOVE tips */
1372#define MOVE_tips NULL
1373
1374/* MOVE argument table */
1375struct redisCommandArg MOVE_Args[] = {
1376{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1377{"db",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1378{0}
1379};
1380
1381/********** OBJECT ENCODING ********************/
1382
1383/* OBJECT ENCODING history */
1384#define OBJECT_ENCODING_History NULL
1385
1386/* OBJECT ENCODING tips */
1387const char *OBJECT_ENCODING_tips[] = {
1388"nondeterministic_output",
1389NULL
1390};
1391
1392/* OBJECT ENCODING argument table */
1393struct redisCommandArg OBJECT_ENCODING_Args[] = {
1394{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1395{0}
1396};
1397
1398/********** OBJECT FREQ ********************/
1399
1400/* OBJECT FREQ history */
1401#define OBJECT_FREQ_History NULL
1402
1403/* OBJECT FREQ tips */
1404const char *OBJECT_FREQ_tips[] = {
1405"nondeterministic_output",
1406NULL
1407};
1408
1409/* OBJECT FREQ argument table */
1410struct redisCommandArg OBJECT_FREQ_Args[] = {
1411{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1412{0}
1413};
1414
1415/********** OBJECT HELP ********************/
1416
1417/* OBJECT HELP history */
1418#define OBJECT_HELP_History NULL
1419
1420/* OBJECT HELP tips */
1421#define OBJECT_HELP_tips NULL
1422
1423/********** OBJECT IDLETIME ********************/
1424
1425/* OBJECT IDLETIME history */
1426#define OBJECT_IDLETIME_History NULL
1427
1428/* OBJECT IDLETIME tips */
1429const char *OBJECT_IDLETIME_tips[] = {
1430"nondeterministic_output",
1431NULL
1432};
1433
1434/* OBJECT IDLETIME argument table */
1435struct redisCommandArg OBJECT_IDLETIME_Args[] = {
1436{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1437{0}
1438};
1439
1440/********** OBJECT REFCOUNT ********************/
1441
1442/* OBJECT REFCOUNT history */
1443#define OBJECT_REFCOUNT_History NULL
1444
1445/* OBJECT REFCOUNT tips */
1446const char *OBJECT_REFCOUNT_tips[] = {
1447"nondeterministic_output",
1448NULL
1449};
1450
1451/* OBJECT REFCOUNT argument table */
1452struct redisCommandArg OBJECT_REFCOUNT_Args[] = {
1453{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1454{0}
1455};
1456
1457/* OBJECT command table */
1458struct redisCommand OBJECT_Subcommands[] = {
1459{"encoding","Inspect the internal encoding of a Redis object","O(1)","2.2.3",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,OBJECT_ENCODING_History,OBJECT_ENCODING_tips,objectCommand,3,CMD_READONLY,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=OBJECT_ENCODING_Args},
1460{"freq","Get the logarithmic access frequency counter of a Redis object","O(1)","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,OBJECT_FREQ_History,OBJECT_FREQ_tips,objectCommand,3,CMD_READONLY,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=OBJECT_FREQ_Args},
1461{"help","Show helpful text about the different subcommands","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,OBJECT_HELP_History,OBJECT_HELP_tips,objectCommand,2,CMD_LOADING|CMD_STALE,ACL_CATEGORY_KEYSPACE},
1462{"idletime","Get the time since a Redis object was last accessed","O(1)","2.2.3",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,OBJECT_IDLETIME_History,OBJECT_IDLETIME_tips,objectCommand,3,CMD_READONLY,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=OBJECT_IDLETIME_Args},
1463{"refcount","Get the number of references to the value of the key","O(1)","2.2.3",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,OBJECT_REFCOUNT_History,OBJECT_REFCOUNT_tips,objectCommand,3,CMD_READONLY,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=OBJECT_REFCOUNT_Args},
1464{0}
1465};
1466
1467/********** OBJECT ********************/
1468
1469/* OBJECT history */
1470#define OBJECT_History NULL
1471
1472/* OBJECT tips */
1473#define OBJECT_tips NULL
1474
1475/********** PERSIST ********************/
1476
1477/* PERSIST history */
1478#define PERSIST_History NULL
1479
1480/* PERSIST tips */
1481#define PERSIST_tips NULL
1482
1483/* PERSIST argument table */
1484struct redisCommandArg PERSIST_Args[] = {
1485{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1486{0}
1487};
1488
1489/********** PEXPIRE ********************/
1490
1491/* PEXPIRE history */
1492commandHistory PEXPIRE_History[] = {
1493{"7.0.0","Added options: `NX`, `XX`, `GT` and `LT`."},
1494{0}
1495};
1496
1497/* PEXPIRE tips */
1498#define PEXPIRE_tips NULL
1499
1500/* PEXPIRE condition argument table */
1501struct redisCommandArg PEXPIRE_condition_Subargs[] = {
1502{"nx",ARG_TYPE_PURE_TOKEN,-1,"NX",NULL,NULL,CMD_ARG_NONE},
1503{"xx",ARG_TYPE_PURE_TOKEN,-1,"XX",NULL,NULL,CMD_ARG_NONE},
1504{"gt",ARG_TYPE_PURE_TOKEN,-1,"GT",NULL,NULL,CMD_ARG_NONE},
1505{"lt",ARG_TYPE_PURE_TOKEN,-1,"LT",NULL,NULL,CMD_ARG_NONE},
1506{0}
1507};
1508
1509/* PEXPIRE argument table */
1510struct redisCommandArg PEXPIRE_Args[] = {
1511{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1512{"milliseconds",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1513{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=PEXPIRE_condition_Subargs},
1514{0}
1515};
1516
1517/********** PEXPIREAT ********************/
1518
1519/* PEXPIREAT history */
1520commandHistory PEXPIREAT_History[] = {
1521{"7.0.0","Added options: `NX`, `XX`, `GT` and `LT`."},
1522{0}
1523};
1524
1525/* PEXPIREAT tips */
1526#define PEXPIREAT_tips NULL
1527
1528/* PEXPIREAT condition argument table */
1529struct redisCommandArg PEXPIREAT_condition_Subargs[] = {
1530{"nx",ARG_TYPE_PURE_TOKEN,-1,"NX",NULL,NULL,CMD_ARG_NONE},
1531{"xx",ARG_TYPE_PURE_TOKEN,-1,"XX",NULL,NULL,CMD_ARG_NONE},
1532{"gt",ARG_TYPE_PURE_TOKEN,-1,"GT",NULL,NULL,CMD_ARG_NONE},
1533{"lt",ARG_TYPE_PURE_TOKEN,-1,"LT",NULL,NULL,CMD_ARG_NONE},
1534{0}
1535};
1536
1537/* PEXPIREAT argument table */
1538struct redisCommandArg PEXPIREAT_Args[] = {
1539{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1540{"unix-time-milliseconds",ARG_TYPE_UNIX_TIME,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1541{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"7.0.0",CMD_ARG_OPTIONAL,.subargs=PEXPIREAT_condition_Subargs},
1542{0}
1543};
1544
1545/********** PEXPIRETIME ********************/
1546
1547/* PEXPIRETIME history */
1548#define PEXPIRETIME_History NULL
1549
1550/* PEXPIRETIME tips */
1551#define PEXPIRETIME_tips NULL
1552
1553/* PEXPIRETIME argument table */
1554struct redisCommandArg PEXPIRETIME_Args[] = {
1555{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1556{0}
1557};
1558
1559/********** PTTL ********************/
1560
1561/* PTTL history */
1562commandHistory PTTL_History[] = {
1563{"2.8.0","Added the -2 reply."},
1564{0}
1565};
1566
1567/* PTTL tips */
1568const char *PTTL_tips[] = {
1569"nondeterministic_output",
1570NULL
1571};
1572
1573/* PTTL argument table */
1574struct redisCommandArg PTTL_Args[] = {
1575{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1576{0}
1577};
1578
1579/********** RANDOMKEY ********************/
1580
1581/* RANDOMKEY history */
1582#define RANDOMKEY_History NULL
1583
1584/* RANDOMKEY tips */
1585const char *RANDOMKEY_tips[] = {
1586"request_policy:all_shards",
1587"nondeterministic_output",
1588NULL
1589};
1590
1591/********** RENAME ********************/
1592
1593/* RENAME history */
1594#define RENAME_History NULL
1595
1596/* RENAME tips */
1597#define RENAME_tips NULL
1598
1599/* RENAME argument table */
1600struct redisCommandArg RENAME_Args[] = {
1601{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1602{"newkey",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_NONE},
1603{0}
1604};
1605
1606/********** RENAMENX ********************/
1607
1608/* RENAMENX history */
1609commandHistory RENAMENX_History[] = {
1610{"3.2.0","The command no longer returns an error when source and destination names are the same."},
1611{0}
1612};
1613
1614/* RENAMENX tips */
1615#define RENAMENX_tips NULL
1616
1617/* RENAMENX argument table */
1618struct redisCommandArg RENAMENX_Args[] = {
1619{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1620{"newkey",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_NONE},
1621{0}
1622};
1623
1624/********** RESTORE ********************/
1625
1626/* RESTORE history */
1627commandHistory RESTORE_History[] = {
1628{"3.0.0","Added the `REPLACE` modifier."},
1629{"5.0.0","Added the `ABSTTL` modifier."},
1630{"5.0.0","Added the `IDLETIME` and `FREQ` options."},
1631{0}
1632};
1633
1634/* RESTORE tips */
1635#define RESTORE_tips NULL
1636
1637/* RESTORE argument table */
1638struct redisCommandArg RESTORE_Args[] = {
1639{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1640{"ttl",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1641{"serialized-value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1642{"replace",ARG_TYPE_PURE_TOKEN,-1,"REPLACE",NULL,"3.0.0",CMD_ARG_OPTIONAL},
1643{"absttl",ARG_TYPE_PURE_TOKEN,-1,"ABSTTL",NULL,"5.0.0",CMD_ARG_OPTIONAL},
1644{"seconds",ARG_TYPE_INTEGER,-1,"IDLETIME",NULL,"5.0.0",CMD_ARG_OPTIONAL},
1645{"frequency",ARG_TYPE_INTEGER,-1,"FREQ",NULL,"5.0.0",CMD_ARG_OPTIONAL},
1646{0}
1647};
1648
1649/********** SCAN ********************/
1650
1651/* SCAN history */
1652commandHistory SCAN_History[] = {
1653{"6.0.0","Added the `TYPE` subcommand."},
1654{0}
1655};
1656
1657/* SCAN tips */
1658const char *SCAN_tips[] = {
1659"nondeterministic_output",
1660"request_policy:special",
1661NULL
1662};
1663
1664/* SCAN argument table */
1665struct redisCommandArg SCAN_Args[] = {
1666{"cursor",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1667{"pattern",ARG_TYPE_PATTERN,-1,"MATCH",NULL,NULL,CMD_ARG_OPTIONAL},
1668{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
1669{"type",ARG_TYPE_STRING,-1,"TYPE",NULL,"6.0.0",CMD_ARG_OPTIONAL},
1670{0}
1671};
1672
1673/********** SORT ********************/
1674
1675/* SORT history */
1676#define SORT_History NULL
1677
1678/* SORT tips */
1679#define SORT_tips NULL
1680
1681/* SORT offset_count argument table */
1682struct redisCommandArg SORT_offset_count_Subargs[] = {
1683{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1684{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1685{0}
1686};
1687
1688/* SORT order argument table */
1689struct redisCommandArg SORT_order_Subargs[] = {
1690{"asc",ARG_TYPE_PURE_TOKEN,-1,"ASC",NULL,NULL,CMD_ARG_NONE},
1691{"desc",ARG_TYPE_PURE_TOKEN,-1,"DESC",NULL,NULL,CMD_ARG_NONE},
1692{0}
1693};
1694
1695/* SORT argument table */
1696struct redisCommandArg SORT_Args[] = {
1697{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1698{"pattern",ARG_TYPE_PATTERN,1,"BY",NULL,NULL,CMD_ARG_OPTIONAL},
1699{"offset_count",ARG_TYPE_BLOCK,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=SORT_offset_count_Subargs},
1700{"pattern",ARG_TYPE_PATTERN,1,"GET",NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE|CMD_ARG_MULTIPLE_TOKEN},
1701{"order",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=SORT_order_Subargs},
1702{"sorting",ARG_TYPE_PURE_TOKEN,-1,"ALPHA",NULL,NULL,CMD_ARG_OPTIONAL},
1703{"destination",ARG_TYPE_KEY,2,"STORE",NULL,NULL,CMD_ARG_OPTIONAL},
1704{0}
1705};
1706
1707/********** SORT_RO ********************/
1708
1709/* SORT_RO history */
1710#define SORT_RO_History NULL
1711
1712/* SORT_RO tips */
1713#define SORT_RO_tips NULL
1714
1715/* SORT_RO offset_count argument table */
1716struct redisCommandArg SORT_RO_offset_count_Subargs[] = {
1717{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1718{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1719{0}
1720};
1721
1722/* SORT_RO order argument table */
1723struct redisCommandArg SORT_RO_order_Subargs[] = {
1724{"asc",ARG_TYPE_PURE_TOKEN,-1,"ASC",NULL,NULL,CMD_ARG_NONE},
1725{"desc",ARG_TYPE_PURE_TOKEN,-1,"DESC",NULL,NULL,CMD_ARG_NONE},
1726{0}
1727};
1728
1729/* SORT_RO argument table */
1730struct redisCommandArg SORT_RO_Args[] = {
1731{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1732{"pattern",ARG_TYPE_PATTERN,1,"BY",NULL,NULL,CMD_ARG_OPTIONAL},
1733{"offset_count",ARG_TYPE_BLOCK,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=SORT_RO_offset_count_Subargs},
1734{"pattern",ARG_TYPE_PATTERN,1,"GET",NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE|CMD_ARG_MULTIPLE_TOKEN},
1735{"order",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=SORT_RO_order_Subargs},
1736{"sorting",ARG_TYPE_PURE_TOKEN,-1,"ALPHA",NULL,NULL,CMD_ARG_OPTIONAL},
1737{0}
1738};
1739
1740/********** TOUCH ********************/
1741
1742/* TOUCH history */
1743#define TOUCH_History NULL
1744
1745/* TOUCH tips */
1746const char *TOUCH_tips[] = {
1747"request_policy:multi_shard",
1748"response_policy:agg_sum",
1749NULL
1750};
1751
1752/* TOUCH argument table */
1753struct redisCommandArg TOUCH_Args[] = {
1754{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
1755{0}
1756};
1757
1758/********** TTL ********************/
1759
1760/* TTL history */
1761commandHistory TTL_History[] = {
1762{"2.8.0","Added the -2 reply."},
1763{0}
1764};
1765
1766/* TTL tips */
1767const char *TTL_tips[] = {
1768"nondeterministic_output",
1769NULL
1770};
1771
1772/* TTL argument table */
1773struct redisCommandArg TTL_Args[] = {
1774{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1775{0}
1776};
1777
1778/********** TYPE ********************/
1779
1780/* TYPE history */
1781#define TYPE_History NULL
1782
1783/* TYPE tips */
1784#define TYPE_tips NULL
1785
1786/* TYPE argument table */
1787struct redisCommandArg TYPE_Args[] = {
1788{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1789{0}
1790};
1791
1792/********** UNLINK ********************/
1793
1794/* UNLINK history */
1795#define UNLINK_History NULL
1796
1797/* UNLINK tips */
1798const char *UNLINK_tips[] = {
1799"request_policy:multi_shard",
1800"response_policy:agg_sum",
1801NULL
1802};
1803
1804/* UNLINK argument table */
1805struct redisCommandArg UNLINK_Args[] = {
1806{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
1807{0}
1808};
1809
1810/********** WAIT ********************/
1811
1812/* WAIT history */
1813#define WAIT_History NULL
1814
1815/* WAIT tips */
1816const char *WAIT_tips[] = {
1817"request_policy:all_shards",
1818"response_policy:agg_min",
1819NULL
1820};
1821
1822/* WAIT argument table */
1823struct redisCommandArg WAIT_Args[] = {
1824{"numreplicas",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1825{"timeout",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1826{0}
1827};
1828
1829/********** GEOADD ********************/
1830
1831/* GEOADD history */
1832commandHistory GEOADD_History[] = {
1833{"6.2.0","Added the `CH`, `NX` and `XX` options."},
1834{0}
1835};
1836
1837/* GEOADD tips */
1838#define GEOADD_tips NULL
1839
1840/* GEOADD condition argument table */
1841struct redisCommandArg GEOADD_condition_Subargs[] = {
1842{"nx",ARG_TYPE_PURE_TOKEN,-1,"NX",NULL,NULL,CMD_ARG_NONE},
1843{"xx",ARG_TYPE_PURE_TOKEN,-1,"XX",NULL,NULL,CMD_ARG_NONE},
1844{0}
1845};
1846
1847/* GEOADD longitude_latitude_member argument table */
1848struct redisCommandArg GEOADD_longitude_latitude_member_Subargs[] = {
1849{"longitude",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1850{"latitude",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1851{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1852{0}
1853};
1854
1855/* GEOADD argument table */
1856struct redisCommandArg GEOADD_Args[] = {
1857{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1858{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=GEOADD_condition_Subargs},
1859{"change",ARG_TYPE_PURE_TOKEN,-1,"CH",NULL,"6.2.0",CMD_ARG_OPTIONAL},
1860{"longitude_latitude_member",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=GEOADD_longitude_latitude_member_Subargs},
1861{0}
1862};
1863
1864/********** GEODIST ********************/
1865
1866/* GEODIST history */
1867#define GEODIST_History NULL
1868
1869/* GEODIST tips */
1870#define GEODIST_tips NULL
1871
1872/* GEODIST unit argument table */
1873struct redisCommandArg GEODIST_unit_Subargs[] = {
1874{"m",ARG_TYPE_PURE_TOKEN,-1,"M",NULL,NULL,CMD_ARG_NONE},
1875{"km",ARG_TYPE_PURE_TOKEN,-1,"KM",NULL,NULL,CMD_ARG_NONE},
1876{"ft",ARG_TYPE_PURE_TOKEN,-1,"FT",NULL,NULL,CMD_ARG_NONE},
1877{"mi",ARG_TYPE_PURE_TOKEN,-1,"MI",NULL,NULL,CMD_ARG_NONE},
1878{0}
1879};
1880
1881/* GEODIST argument table */
1882struct redisCommandArg GEODIST_Args[] = {
1883{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1884{"member1",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1885{"member2",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1886{"unit",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEODIST_unit_Subargs},
1887{0}
1888};
1889
1890/********** GEOHASH ********************/
1891
1892/* GEOHASH history */
1893#define GEOHASH_History NULL
1894
1895/* GEOHASH tips */
1896#define GEOHASH_tips NULL
1897
1898/* GEOHASH argument table */
1899struct redisCommandArg GEOHASH_Args[] = {
1900{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1901{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
1902{0}
1903};
1904
1905/********** GEOPOS ********************/
1906
1907/* GEOPOS history */
1908#define GEOPOS_History NULL
1909
1910/* GEOPOS tips */
1911#define GEOPOS_tips NULL
1912
1913/* GEOPOS argument table */
1914struct redisCommandArg GEOPOS_Args[] = {
1915{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1916{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
1917{0}
1918};
1919
1920/********** GEORADIUS ********************/
1921
1922/* GEORADIUS history */
1923commandHistory GEORADIUS_History[] = {
1924{"6.2.0","Added the `ANY` option for `COUNT`."},
1925{0}
1926};
1927
1928/* GEORADIUS tips */
1929#define GEORADIUS_tips NULL
1930
1931/* GEORADIUS unit argument table */
1932struct redisCommandArg GEORADIUS_unit_Subargs[] = {
1933{"m",ARG_TYPE_PURE_TOKEN,-1,"M",NULL,NULL,CMD_ARG_NONE},
1934{"km",ARG_TYPE_PURE_TOKEN,-1,"KM",NULL,NULL,CMD_ARG_NONE},
1935{"ft",ARG_TYPE_PURE_TOKEN,-1,"FT",NULL,NULL,CMD_ARG_NONE},
1936{"mi",ARG_TYPE_PURE_TOKEN,-1,"MI",NULL,NULL,CMD_ARG_NONE},
1937{0}
1938};
1939
1940/* GEORADIUS count argument table */
1941struct redisCommandArg GEORADIUS_count_Subargs[] = {
1942{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_NONE},
1943{"any",ARG_TYPE_PURE_TOKEN,-1,"ANY",NULL,"6.2.0",CMD_ARG_OPTIONAL},
1944{0}
1945};
1946
1947/* GEORADIUS order argument table */
1948struct redisCommandArg GEORADIUS_order_Subargs[] = {
1949{"asc",ARG_TYPE_PURE_TOKEN,-1,"ASC",NULL,NULL,CMD_ARG_NONE},
1950{"desc",ARG_TYPE_PURE_TOKEN,-1,"DESC",NULL,NULL,CMD_ARG_NONE},
1951{0}
1952};
1953
1954/* GEORADIUS argument table */
1955struct redisCommandArg GEORADIUS_Args[] = {
1956{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
1957{"longitude",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1958{"latitude",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1959{"radius",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
1960{"unit",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEORADIUS_unit_Subargs},
1961{"withcoord",ARG_TYPE_PURE_TOKEN,-1,"WITHCOORD",NULL,NULL,CMD_ARG_OPTIONAL},
1962{"withdist",ARG_TYPE_PURE_TOKEN,-1,"WITHDIST",NULL,NULL,CMD_ARG_OPTIONAL},
1963{"withhash",ARG_TYPE_PURE_TOKEN,-1,"WITHHASH",NULL,NULL,CMD_ARG_OPTIONAL},
1964{"count",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEORADIUS_count_Subargs},
1965{"order",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEORADIUS_order_Subargs},
1966{"key",ARG_TYPE_KEY,1,"STORE",NULL,NULL,CMD_ARG_OPTIONAL},
1967{"key",ARG_TYPE_KEY,2,"STOREDIST",NULL,NULL,CMD_ARG_OPTIONAL},
1968{0}
1969};
1970
1971/********** GEORADIUSBYMEMBER ********************/
1972
1973/* GEORADIUSBYMEMBER history */
1974#define GEORADIUSBYMEMBER_History NULL
1975
1976/* GEORADIUSBYMEMBER tips */
1977#define GEORADIUSBYMEMBER_tips NULL
1978
1979/* GEORADIUSBYMEMBER unit argument table */
1980struct redisCommandArg GEORADIUSBYMEMBER_unit_Subargs[] = {
1981{"m",ARG_TYPE_PURE_TOKEN,-1,"M",NULL,NULL,CMD_ARG_NONE},
1982{"km",ARG_TYPE_PURE_TOKEN,-1,"KM",NULL,NULL,CMD_ARG_NONE},
1983{"ft",ARG_TYPE_PURE_TOKEN,-1,"FT",NULL,NULL,CMD_ARG_NONE},
1984{"mi",ARG_TYPE_PURE_TOKEN,-1,"MI",NULL,NULL,CMD_ARG_NONE},
1985{0}
1986};
1987
1988/* GEORADIUSBYMEMBER count argument table */
1989struct redisCommandArg GEORADIUSBYMEMBER_count_Subargs[] = {
1990{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_NONE},
1991{"any",ARG_TYPE_PURE_TOKEN,-1,"ANY",NULL,NULL,CMD_ARG_OPTIONAL},
1992{0}
1993};
1994
1995/* GEORADIUSBYMEMBER order argument table */
1996struct redisCommandArg GEORADIUSBYMEMBER_order_Subargs[] = {
1997{"asc",ARG_TYPE_PURE_TOKEN,-1,"ASC",NULL,NULL,CMD_ARG_NONE},
1998{"desc",ARG_TYPE_PURE_TOKEN,-1,"DESC",NULL,NULL,CMD_ARG_NONE},
1999{0}
2000};
2001
2002/* GEORADIUSBYMEMBER argument table */
2003struct redisCommandArg GEORADIUSBYMEMBER_Args[] = {
2004{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2005{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2006{"radius",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2007{"unit",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEORADIUSBYMEMBER_unit_Subargs},
2008{"withcoord",ARG_TYPE_PURE_TOKEN,-1,"WITHCOORD",NULL,NULL,CMD_ARG_OPTIONAL},
2009{"withdist",ARG_TYPE_PURE_TOKEN,-1,"WITHDIST",NULL,NULL,CMD_ARG_OPTIONAL},
2010{"withhash",ARG_TYPE_PURE_TOKEN,-1,"WITHHASH",NULL,NULL,CMD_ARG_OPTIONAL},
2011{"count",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEORADIUSBYMEMBER_count_Subargs},
2012{"order",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEORADIUSBYMEMBER_order_Subargs},
2013{"key",ARG_TYPE_KEY,1,"STORE",NULL,NULL,CMD_ARG_OPTIONAL},
2014{"key",ARG_TYPE_KEY,2,"STOREDIST",NULL,NULL,CMD_ARG_OPTIONAL},
2015{0}
2016};
2017
2018/********** GEORADIUSBYMEMBER_RO ********************/
2019
2020/* GEORADIUSBYMEMBER_RO history */
2021#define GEORADIUSBYMEMBER_RO_History NULL
2022
2023/* GEORADIUSBYMEMBER_RO tips */
2024#define GEORADIUSBYMEMBER_RO_tips NULL
2025
2026/* GEORADIUSBYMEMBER_RO unit argument table */
2027struct redisCommandArg GEORADIUSBYMEMBER_RO_unit_Subargs[] = {
2028{"m",ARG_TYPE_PURE_TOKEN,-1,"M",NULL,NULL,CMD_ARG_NONE},
2029{"km",ARG_TYPE_PURE_TOKEN,-1,"KM",NULL,NULL,CMD_ARG_NONE},
2030{"ft",ARG_TYPE_PURE_TOKEN,-1,"FT",NULL,NULL,CMD_ARG_NONE},
2031{"mi",ARG_TYPE_PURE_TOKEN,-1,"MI",NULL,NULL,CMD_ARG_NONE},
2032{0}
2033};
2034
2035/* GEORADIUSBYMEMBER_RO count argument table */
2036struct redisCommandArg GEORADIUSBYMEMBER_RO_count_Subargs[] = {
2037{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_NONE},
2038{"any",ARG_TYPE_PURE_TOKEN,-1,"ANY",NULL,NULL,CMD_ARG_OPTIONAL},
2039{0}
2040};
2041
2042/* GEORADIUSBYMEMBER_RO order argument table */
2043struct redisCommandArg GEORADIUSBYMEMBER_RO_order_Subargs[] = {
2044{"asc",ARG_TYPE_PURE_TOKEN,-1,"ASC",NULL,NULL,CMD_ARG_NONE},
2045{"desc",ARG_TYPE_PURE_TOKEN,-1,"DESC",NULL,NULL,CMD_ARG_NONE},
2046{0}
2047};
2048
2049/* GEORADIUSBYMEMBER_RO argument table */
2050struct redisCommandArg GEORADIUSBYMEMBER_RO_Args[] = {
2051{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2052{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2053{"radius",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2054{"unit",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEORADIUSBYMEMBER_RO_unit_Subargs},
2055{"withcoord",ARG_TYPE_PURE_TOKEN,-1,"WITHCOORD",NULL,NULL,CMD_ARG_OPTIONAL},
2056{"withdist",ARG_TYPE_PURE_TOKEN,-1,"WITHDIST",NULL,NULL,CMD_ARG_OPTIONAL},
2057{"withhash",ARG_TYPE_PURE_TOKEN,-1,"WITHHASH",NULL,NULL,CMD_ARG_OPTIONAL},
2058{"count",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEORADIUSBYMEMBER_RO_count_Subargs},
2059{"order",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEORADIUSBYMEMBER_RO_order_Subargs},
2060{0}
2061};
2062
2063/********** GEORADIUS_RO ********************/
2064
2065/* GEORADIUS_RO history */
2066commandHistory GEORADIUS_RO_History[] = {
2067{"6.2.0","Added the `ANY` option for `COUNT`."},
2068{0}
2069};
2070
2071/* GEORADIUS_RO tips */
2072#define GEORADIUS_RO_tips NULL
2073
2074/* GEORADIUS_RO unit argument table */
2075struct redisCommandArg GEORADIUS_RO_unit_Subargs[] = {
2076{"m",ARG_TYPE_PURE_TOKEN,-1,"M",NULL,NULL,CMD_ARG_NONE},
2077{"km",ARG_TYPE_PURE_TOKEN,-1,"KM",NULL,NULL,CMD_ARG_NONE},
2078{"ft",ARG_TYPE_PURE_TOKEN,-1,"FT",NULL,NULL,CMD_ARG_NONE},
2079{"mi",ARG_TYPE_PURE_TOKEN,-1,"MI",NULL,NULL,CMD_ARG_NONE},
2080{0}
2081};
2082
2083/* GEORADIUS_RO count argument table */
2084struct redisCommandArg GEORADIUS_RO_count_Subargs[] = {
2085{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_NONE},
2086{"any",ARG_TYPE_PURE_TOKEN,-1,"ANY",NULL,"6.2.0",CMD_ARG_OPTIONAL},
2087{0}
2088};
2089
2090/* GEORADIUS_RO order argument table */
2091struct redisCommandArg GEORADIUS_RO_order_Subargs[] = {
2092{"asc",ARG_TYPE_PURE_TOKEN,-1,"ASC",NULL,NULL,CMD_ARG_NONE},
2093{"desc",ARG_TYPE_PURE_TOKEN,-1,"DESC",NULL,NULL,CMD_ARG_NONE},
2094{0}
2095};
2096
2097/* GEORADIUS_RO argument table */
2098struct redisCommandArg GEORADIUS_RO_Args[] = {
2099{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2100{"longitude",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2101{"latitude",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2102{"radius",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2103{"unit",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEORADIUS_RO_unit_Subargs},
2104{"withcoord",ARG_TYPE_PURE_TOKEN,-1,"WITHCOORD",NULL,NULL,CMD_ARG_OPTIONAL},
2105{"withdist",ARG_TYPE_PURE_TOKEN,-1,"WITHDIST",NULL,NULL,CMD_ARG_OPTIONAL},
2106{"withhash",ARG_TYPE_PURE_TOKEN,-1,"WITHHASH",NULL,NULL,CMD_ARG_OPTIONAL},
2107{"count",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEORADIUS_RO_count_Subargs},
2108{"order",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEORADIUS_RO_order_Subargs},
2109{0}
2110};
2111
2112/********** GEOSEARCH ********************/
2113
2114/* GEOSEARCH history */
2115#define GEOSEARCH_History NULL
2116
2117/* GEOSEARCH tips */
2118#define GEOSEARCH_tips NULL
2119
2120/* GEOSEARCH from longitude_latitude argument table */
2121struct redisCommandArg GEOSEARCH_from_longitude_latitude_Subargs[] = {
2122{"longitude",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2123{"latitude",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2124{0}
2125};
2126
2127/* GEOSEARCH from argument table */
2128struct redisCommandArg GEOSEARCH_from_Subargs[] = {
2129{"member",ARG_TYPE_STRING,-1,"FROMMEMBER",NULL,NULL,CMD_ARG_NONE},
2130{"longitude_latitude",ARG_TYPE_BLOCK,-1,"FROMLONLAT",NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCH_from_longitude_latitude_Subargs},
2131{0}
2132};
2133
2134/* GEOSEARCH by circle unit argument table */
2135struct redisCommandArg GEOSEARCH_by_circle_unit_Subargs[] = {
2136{"m",ARG_TYPE_PURE_TOKEN,-1,"M",NULL,NULL,CMD_ARG_NONE},
2137{"km",ARG_TYPE_PURE_TOKEN,-1,"KM",NULL,NULL,CMD_ARG_NONE},
2138{"ft",ARG_TYPE_PURE_TOKEN,-1,"FT",NULL,NULL,CMD_ARG_NONE},
2139{"mi",ARG_TYPE_PURE_TOKEN,-1,"MI",NULL,NULL,CMD_ARG_NONE},
2140{0}
2141};
2142
2143/* GEOSEARCH by circle argument table */
2144struct redisCommandArg GEOSEARCH_by_circle_Subargs[] = {
2145{"radius",ARG_TYPE_DOUBLE,-1,"BYRADIUS",NULL,NULL,CMD_ARG_NONE},
2146{"unit",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCH_by_circle_unit_Subargs},
2147{0}
2148};
2149
2150/* GEOSEARCH by box unit argument table */
2151struct redisCommandArg GEOSEARCH_by_box_unit_Subargs[] = {
2152{"m",ARG_TYPE_PURE_TOKEN,-1,"M",NULL,NULL,CMD_ARG_NONE},
2153{"km",ARG_TYPE_PURE_TOKEN,-1,"KM",NULL,NULL,CMD_ARG_NONE},
2154{"ft",ARG_TYPE_PURE_TOKEN,-1,"FT",NULL,NULL,CMD_ARG_NONE},
2155{"mi",ARG_TYPE_PURE_TOKEN,-1,"MI",NULL,NULL,CMD_ARG_NONE},
2156{0}
2157};
2158
2159/* GEOSEARCH by box argument table */
2160struct redisCommandArg GEOSEARCH_by_box_Subargs[] = {
2161{"width",ARG_TYPE_DOUBLE,-1,"BYBOX",NULL,NULL,CMD_ARG_NONE},
2162{"height",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2163{"unit",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCH_by_box_unit_Subargs},
2164{0}
2165};
2166
2167/* GEOSEARCH by argument table */
2168struct redisCommandArg GEOSEARCH_by_Subargs[] = {
2169{"circle",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCH_by_circle_Subargs},
2170{"box",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCH_by_box_Subargs},
2171{0}
2172};
2173
2174/* GEOSEARCH order argument table */
2175struct redisCommandArg GEOSEARCH_order_Subargs[] = {
2176{"asc",ARG_TYPE_PURE_TOKEN,-1,"ASC",NULL,NULL,CMD_ARG_NONE},
2177{"desc",ARG_TYPE_PURE_TOKEN,-1,"DESC",NULL,NULL,CMD_ARG_NONE},
2178{0}
2179};
2180
2181/* GEOSEARCH count argument table */
2182struct redisCommandArg GEOSEARCH_count_Subargs[] = {
2183{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_NONE},
2184{"any",ARG_TYPE_PURE_TOKEN,-1,"ANY",NULL,NULL,CMD_ARG_OPTIONAL},
2185{0}
2186};
2187
2188/* GEOSEARCH argument table */
2189struct redisCommandArg GEOSEARCH_Args[] = {
2190{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2191{"from",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCH_from_Subargs},
2192{"by",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCH_by_Subargs},
2193{"order",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEOSEARCH_order_Subargs},
2194{"count",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEOSEARCH_count_Subargs},
2195{"withcoord",ARG_TYPE_PURE_TOKEN,-1,"WITHCOORD",NULL,NULL,CMD_ARG_OPTIONAL},
2196{"withdist",ARG_TYPE_PURE_TOKEN,-1,"WITHDIST",NULL,NULL,CMD_ARG_OPTIONAL},
2197{"withhash",ARG_TYPE_PURE_TOKEN,-1,"WITHHASH",NULL,NULL,CMD_ARG_OPTIONAL},
2198{0}
2199};
2200
2201/********** GEOSEARCHSTORE ********************/
2202
2203/* GEOSEARCHSTORE history */
2204#define GEOSEARCHSTORE_History NULL
2205
2206/* GEOSEARCHSTORE tips */
2207#define GEOSEARCHSTORE_tips NULL
2208
2209/* GEOSEARCHSTORE from longitude_latitude argument table */
2210struct redisCommandArg GEOSEARCHSTORE_from_longitude_latitude_Subargs[] = {
2211{"longitude",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2212{"latitude",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2213{0}
2214};
2215
2216/* GEOSEARCHSTORE from argument table */
2217struct redisCommandArg GEOSEARCHSTORE_from_Subargs[] = {
2218{"member",ARG_TYPE_STRING,-1,"FROMMEMBER",NULL,NULL,CMD_ARG_NONE},
2219{"longitude_latitude",ARG_TYPE_BLOCK,-1,"FROMLONLAT",NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCHSTORE_from_longitude_latitude_Subargs},
2220{0}
2221};
2222
2223/* GEOSEARCHSTORE by circle unit argument table */
2224struct redisCommandArg GEOSEARCHSTORE_by_circle_unit_Subargs[] = {
2225{"m",ARG_TYPE_PURE_TOKEN,-1,"M",NULL,NULL,CMD_ARG_NONE},
2226{"km",ARG_TYPE_PURE_TOKEN,-1,"KM",NULL,NULL,CMD_ARG_NONE},
2227{"ft",ARG_TYPE_PURE_TOKEN,-1,"FT",NULL,NULL,CMD_ARG_NONE},
2228{"mi",ARG_TYPE_PURE_TOKEN,-1,"MI",NULL,NULL,CMD_ARG_NONE},
2229{0}
2230};
2231
2232/* GEOSEARCHSTORE by circle argument table */
2233struct redisCommandArg GEOSEARCHSTORE_by_circle_Subargs[] = {
2234{"radius",ARG_TYPE_DOUBLE,-1,"BYRADIUS",NULL,NULL,CMD_ARG_NONE},
2235{"unit",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCHSTORE_by_circle_unit_Subargs},
2236{0}
2237};
2238
2239/* GEOSEARCHSTORE by box unit argument table */
2240struct redisCommandArg GEOSEARCHSTORE_by_box_unit_Subargs[] = {
2241{"m",ARG_TYPE_PURE_TOKEN,-1,"M",NULL,NULL,CMD_ARG_NONE},
2242{"km",ARG_TYPE_PURE_TOKEN,-1,"KM",NULL,NULL,CMD_ARG_NONE},
2243{"ft",ARG_TYPE_PURE_TOKEN,-1,"FT",NULL,NULL,CMD_ARG_NONE},
2244{"mi",ARG_TYPE_PURE_TOKEN,-1,"MI",NULL,NULL,CMD_ARG_NONE},
2245{0}
2246};
2247
2248/* GEOSEARCHSTORE by box argument table */
2249struct redisCommandArg GEOSEARCHSTORE_by_box_Subargs[] = {
2250{"width",ARG_TYPE_DOUBLE,-1,"BYBOX",NULL,NULL,CMD_ARG_NONE},
2251{"height",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2252{"unit",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCHSTORE_by_box_unit_Subargs},
2253{0}
2254};
2255
2256/* GEOSEARCHSTORE by argument table */
2257struct redisCommandArg GEOSEARCHSTORE_by_Subargs[] = {
2258{"circle",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCHSTORE_by_circle_Subargs},
2259{"box",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCHSTORE_by_box_Subargs},
2260{0}
2261};
2262
2263/* GEOSEARCHSTORE order argument table */
2264struct redisCommandArg GEOSEARCHSTORE_order_Subargs[] = {
2265{"asc",ARG_TYPE_PURE_TOKEN,-1,"ASC",NULL,NULL,CMD_ARG_NONE},
2266{"desc",ARG_TYPE_PURE_TOKEN,-1,"DESC",NULL,NULL,CMD_ARG_NONE},
2267{0}
2268};
2269
2270/* GEOSEARCHSTORE count argument table */
2271struct redisCommandArg GEOSEARCHSTORE_count_Subargs[] = {
2272{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_NONE},
2273{"any",ARG_TYPE_PURE_TOKEN,-1,"ANY",NULL,NULL,CMD_ARG_OPTIONAL},
2274{0}
2275};
2276
2277/* GEOSEARCHSTORE argument table */
2278struct redisCommandArg GEOSEARCHSTORE_Args[] = {
2279{"destination",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2280{"source",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_NONE},
2281{"from",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCHSTORE_from_Subargs},
2282{"by",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=GEOSEARCHSTORE_by_Subargs},
2283{"order",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEOSEARCHSTORE_order_Subargs},
2284{"count",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GEOSEARCHSTORE_count_Subargs},
2285{"storedist",ARG_TYPE_PURE_TOKEN,-1,"STOREDIST",NULL,NULL,CMD_ARG_OPTIONAL},
2286{0}
2287};
2288
2289/********** HDEL ********************/
2290
2291/* HDEL history */
2292commandHistory HDEL_History[] = {
2293{"2.4.0","Accepts multiple `field` arguments."},
2294{0}
2295};
2296
2297/* HDEL tips */
2298#define HDEL_tips NULL
2299
2300/* HDEL argument table */
2301struct redisCommandArg HDEL_Args[] = {
2302{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2303{"field",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
2304{0}
2305};
2306
2307/********** HEXISTS ********************/
2308
2309/* HEXISTS history */
2310#define HEXISTS_History NULL
2311
2312/* HEXISTS tips */
2313#define HEXISTS_tips NULL
2314
2315/* HEXISTS argument table */
2316struct redisCommandArg HEXISTS_Args[] = {
2317{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2318{"field",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2319{0}
2320};
2321
2322/********** HGET ********************/
2323
2324/* HGET history */
2325#define HGET_History NULL
2326
2327/* HGET tips */
2328#define HGET_tips NULL
2329
2330/* HGET argument table */
2331struct redisCommandArg HGET_Args[] = {
2332{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2333{"field",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2334{0}
2335};
2336
2337/********** HGETALL ********************/
2338
2339/* HGETALL history */
2340#define HGETALL_History NULL
2341
2342/* HGETALL tips */
2343const char *HGETALL_tips[] = {
2344"nondeterministic_output_order",
2345NULL
2346};
2347
2348/* HGETALL argument table */
2349struct redisCommandArg HGETALL_Args[] = {
2350{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2351{0}
2352};
2353
2354/********** HINCRBY ********************/
2355
2356/* HINCRBY history */
2357#define HINCRBY_History NULL
2358
2359/* HINCRBY tips */
2360#define HINCRBY_tips NULL
2361
2362/* HINCRBY argument table */
2363struct redisCommandArg HINCRBY_Args[] = {
2364{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2365{"field",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2366{"increment",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2367{0}
2368};
2369
2370/********** HINCRBYFLOAT ********************/
2371
2372/* HINCRBYFLOAT history */
2373#define HINCRBYFLOAT_History NULL
2374
2375/* HINCRBYFLOAT tips */
2376#define HINCRBYFLOAT_tips NULL
2377
2378/* HINCRBYFLOAT argument table */
2379struct redisCommandArg HINCRBYFLOAT_Args[] = {
2380{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2381{"field",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2382{"increment",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2383{0}
2384};
2385
2386/********** HKEYS ********************/
2387
2388/* HKEYS history */
2389#define HKEYS_History NULL
2390
2391/* HKEYS tips */
2392const char *HKEYS_tips[] = {
2393"nondeterministic_output_order",
2394NULL
2395};
2396
2397/* HKEYS argument table */
2398struct redisCommandArg HKEYS_Args[] = {
2399{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2400{0}
2401};
2402
2403/********** HLEN ********************/
2404
2405/* HLEN history */
2406#define HLEN_History NULL
2407
2408/* HLEN tips */
2409#define HLEN_tips NULL
2410
2411/* HLEN argument table */
2412struct redisCommandArg HLEN_Args[] = {
2413{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2414{0}
2415};
2416
2417/********** HMGET ********************/
2418
2419/* HMGET history */
2420#define HMGET_History NULL
2421
2422/* HMGET tips */
2423#define HMGET_tips NULL
2424
2425/* HMGET argument table */
2426struct redisCommandArg HMGET_Args[] = {
2427{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2428{"field",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
2429{0}
2430};
2431
2432/********** HMSET ********************/
2433
2434/* HMSET history */
2435#define HMSET_History NULL
2436
2437/* HMSET tips */
2438#define HMSET_tips NULL
2439
2440/* HMSET field_value argument table */
2441struct redisCommandArg HMSET_field_value_Subargs[] = {
2442{"field",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2443{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2444{0}
2445};
2446
2447/* HMSET argument table */
2448struct redisCommandArg HMSET_Args[] = {
2449{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2450{"field_value",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=HMSET_field_value_Subargs},
2451{0}
2452};
2453
2454/********** HRANDFIELD ********************/
2455
2456/* HRANDFIELD history */
2457#define HRANDFIELD_History NULL
2458
2459/* HRANDFIELD tips */
2460const char *HRANDFIELD_tips[] = {
2461"nondeterministic_output",
2462NULL
2463};
2464
2465/* HRANDFIELD options argument table */
2466struct redisCommandArg HRANDFIELD_options_Subargs[] = {
2467{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2468{"withvalues",ARG_TYPE_PURE_TOKEN,-1,"WITHVALUES",NULL,NULL,CMD_ARG_OPTIONAL},
2469{0}
2470};
2471
2472/* HRANDFIELD argument table */
2473struct redisCommandArg HRANDFIELD_Args[] = {
2474{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2475{"options",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=HRANDFIELD_options_Subargs},
2476{0}
2477};
2478
2479/********** HSCAN ********************/
2480
2481/* HSCAN history */
2482#define HSCAN_History NULL
2483
2484/* HSCAN tips */
2485const char *HSCAN_tips[] = {
2486"nondeterministic_output",
2487NULL
2488};
2489
2490/* HSCAN argument table */
2491struct redisCommandArg HSCAN_Args[] = {
2492{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2493{"cursor",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2494{"pattern",ARG_TYPE_PATTERN,-1,"MATCH",NULL,NULL,CMD_ARG_OPTIONAL},
2495{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
2496{0}
2497};
2498
2499/********** HSET ********************/
2500
2501/* HSET history */
2502commandHistory HSET_History[] = {
2503{"4.0.0","Accepts multiple `field` and `value` arguments."},
2504{0}
2505};
2506
2507/* HSET tips */
2508#define HSET_tips NULL
2509
2510/* HSET field_value argument table */
2511struct redisCommandArg HSET_field_value_Subargs[] = {
2512{"field",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2513{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2514{0}
2515};
2516
2517/* HSET argument table */
2518struct redisCommandArg HSET_Args[] = {
2519{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2520{"field_value",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=HSET_field_value_Subargs},
2521{0}
2522};
2523
2524/********** HSETNX ********************/
2525
2526/* HSETNX history */
2527#define HSETNX_History NULL
2528
2529/* HSETNX tips */
2530#define HSETNX_tips NULL
2531
2532/* HSETNX argument table */
2533struct redisCommandArg HSETNX_Args[] = {
2534{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2535{"field",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2536{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2537{0}
2538};
2539
2540/********** HSTRLEN ********************/
2541
2542/* HSTRLEN history */
2543#define HSTRLEN_History NULL
2544
2545/* HSTRLEN tips */
2546#define HSTRLEN_tips NULL
2547
2548/* HSTRLEN argument table */
2549struct redisCommandArg HSTRLEN_Args[] = {
2550{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2551{"field",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2552{0}
2553};
2554
2555/********** HVALS ********************/
2556
2557/* HVALS history */
2558#define HVALS_History NULL
2559
2560/* HVALS tips */
2561const char *HVALS_tips[] = {
2562"nondeterministic_output_order",
2563NULL
2564};
2565
2566/* HVALS argument table */
2567struct redisCommandArg HVALS_Args[] = {
2568{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2569{0}
2570};
2571
2572/********** PFADD ********************/
2573
2574/* PFADD history */
2575#define PFADD_History NULL
2576
2577/* PFADD tips */
2578#define PFADD_tips NULL
2579
2580/* PFADD argument table */
2581struct redisCommandArg PFADD_Args[] = {
2582{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2583{"element",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
2584{0}
2585};
2586
2587/********** PFCOUNT ********************/
2588
2589/* PFCOUNT history */
2590#define PFCOUNT_History NULL
2591
2592/* PFCOUNT tips */
2593#define PFCOUNT_tips NULL
2594
2595/* PFCOUNT argument table */
2596struct redisCommandArg PFCOUNT_Args[] = {
2597{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
2598{0}
2599};
2600
2601/********** PFDEBUG ********************/
2602
2603/* PFDEBUG history */
2604#define PFDEBUG_History NULL
2605
2606/* PFDEBUG tips */
2607#define PFDEBUG_tips NULL
2608
2609/* PFDEBUG argument table */
2610struct redisCommandArg PFDEBUG_Args[] = {
2611{"subcommand",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2612{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2613{0}
2614};
2615
2616/********** PFMERGE ********************/
2617
2618/* PFMERGE history */
2619#define PFMERGE_History NULL
2620
2621/* PFMERGE tips */
2622#define PFMERGE_tips NULL
2623
2624/* PFMERGE argument table */
2625struct redisCommandArg PFMERGE_Args[] = {
2626{"destkey",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2627{"sourcekey",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
2628{0}
2629};
2630
2631/********** PFSELFTEST ********************/
2632
2633/* PFSELFTEST history */
2634#define PFSELFTEST_History NULL
2635
2636/* PFSELFTEST tips */
2637#define PFSELFTEST_tips NULL
2638
2639/********** BLMOVE ********************/
2640
2641/* BLMOVE history */
2642#define BLMOVE_History NULL
2643
2644/* BLMOVE tips */
2645#define BLMOVE_tips NULL
2646
2647/* BLMOVE wherefrom argument table */
2648struct redisCommandArg BLMOVE_wherefrom_Subargs[] = {
2649{"left",ARG_TYPE_PURE_TOKEN,-1,"LEFT",NULL,NULL,CMD_ARG_NONE},
2650{"right",ARG_TYPE_PURE_TOKEN,-1,"RIGHT",NULL,NULL,CMD_ARG_NONE},
2651{0}
2652};
2653
2654/* BLMOVE whereto argument table */
2655struct redisCommandArg BLMOVE_whereto_Subargs[] = {
2656{"left",ARG_TYPE_PURE_TOKEN,-1,"LEFT",NULL,NULL,CMD_ARG_NONE},
2657{"right",ARG_TYPE_PURE_TOKEN,-1,"RIGHT",NULL,NULL,CMD_ARG_NONE},
2658{0}
2659};
2660
2661/* BLMOVE argument table */
2662struct redisCommandArg BLMOVE_Args[] = {
2663{"source",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2664{"destination",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_NONE},
2665{"wherefrom",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=BLMOVE_wherefrom_Subargs},
2666{"whereto",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=BLMOVE_whereto_Subargs},
2667{"timeout",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2668{0}
2669};
2670
2671/********** BLMPOP ********************/
2672
2673/* BLMPOP history */
2674#define BLMPOP_History NULL
2675
2676/* BLMPOP tips */
2677#define BLMPOP_tips NULL
2678
2679/* BLMPOP where argument table */
2680struct redisCommandArg BLMPOP_where_Subargs[] = {
2681{"left",ARG_TYPE_PURE_TOKEN,-1,"LEFT",NULL,NULL,CMD_ARG_NONE},
2682{"right",ARG_TYPE_PURE_TOKEN,-1,"RIGHT",NULL,NULL,CMD_ARG_NONE},
2683{0}
2684};
2685
2686/* BLMPOP argument table */
2687struct redisCommandArg BLMPOP_Args[] = {
2688{"timeout",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2689{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2690{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
2691{"where",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=BLMPOP_where_Subargs},
2692{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
2693{0}
2694};
2695
2696/********** BLPOP ********************/
2697
2698/* BLPOP history */
2699commandHistory BLPOP_History[] = {
2700{"6.0.0","`timeout` is interpreted as a double instead of an integer."},
2701{0}
2702};
2703
2704/* BLPOP tips */
2705#define BLPOP_tips NULL
2706
2707/* BLPOP argument table */
2708struct redisCommandArg BLPOP_Args[] = {
2709{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
2710{"timeout",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2711{0}
2712};
2713
2714/********** BRPOP ********************/
2715
2716/* BRPOP history */
2717commandHistory BRPOP_History[] = {
2718{"6.0.0","`timeout` is interpreted as a double instead of an integer."},
2719{0}
2720};
2721
2722/* BRPOP tips */
2723#define BRPOP_tips NULL
2724
2725/* BRPOP argument table */
2726struct redisCommandArg BRPOP_Args[] = {
2727{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
2728{"timeout",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2729{0}
2730};
2731
2732/********** BRPOPLPUSH ********************/
2733
2734/* BRPOPLPUSH history */
2735commandHistory BRPOPLPUSH_History[] = {
2736{"6.0.0","`timeout` is interpreted as a double instead of an integer."},
2737{0}
2738};
2739
2740/* BRPOPLPUSH tips */
2741#define BRPOPLPUSH_tips NULL
2742
2743/* BRPOPLPUSH argument table */
2744struct redisCommandArg BRPOPLPUSH_Args[] = {
2745{"source",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2746{"destination",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_NONE},
2747{"timeout",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2748{0}
2749};
2750
2751/********** LINDEX ********************/
2752
2753/* LINDEX history */
2754#define LINDEX_History NULL
2755
2756/* LINDEX tips */
2757#define LINDEX_tips NULL
2758
2759/* LINDEX argument table */
2760struct redisCommandArg LINDEX_Args[] = {
2761{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2762{"index",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2763{0}
2764};
2765
2766/********** LINSERT ********************/
2767
2768/* LINSERT history */
2769#define LINSERT_History NULL
2770
2771/* LINSERT tips */
2772#define LINSERT_tips NULL
2773
2774/* LINSERT where argument table */
2775struct redisCommandArg LINSERT_where_Subargs[] = {
2776{"before",ARG_TYPE_PURE_TOKEN,-1,"BEFORE",NULL,NULL,CMD_ARG_NONE},
2777{"after",ARG_TYPE_PURE_TOKEN,-1,"AFTER",NULL,NULL,CMD_ARG_NONE},
2778{0}
2779};
2780
2781/* LINSERT argument table */
2782struct redisCommandArg LINSERT_Args[] = {
2783{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2784{"where",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=LINSERT_where_Subargs},
2785{"pivot",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2786{"element",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2787{0}
2788};
2789
2790/********** LLEN ********************/
2791
2792/* LLEN history */
2793#define LLEN_History NULL
2794
2795/* LLEN tips */
2796#define LLEN_tips NULL
2797
2798/* LLEN argument table */
2799struct redisCommandArg LLEN_Args[] = {
2800{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2801{0}
2802};
2803
2804/********** LMOVE ********************/
2805
2806/* LMOVE history */
2807#define LMOVE_History NULL
2808
2809/* LMOVE tips */
2810#define LMOVE_tips NULL
2811
2812/* LMOVE wherefrom argument table */
2813struct redisCommandArg LMOVE_wherefrom_Subargs[] = {
2814{"left",ARG_TYPE_PURE_TOKEN,-1,"LEFT",NULL,NULL,CMD_ARG_NONE},
2815{"right",ARG_TYPE_PURE_TOKEN,-1,"RIGHT",NULL,NULL,CMD_ARG_NONE},
2816{0}
2817};
2818
2819/* LMOVE whereto argument table */
2820struct redisCommandArg LMOVE_whereto_Subargs[] = {
2821{"left",ARG_TYPE_PURE_TOKEN,-1,"LEFT",NULL,NULL,CMD_ARG_NONE},
2822{"right",ARG_TYPE_PURE_TOKEN,-1,"RIGHT",NULL,NULL,CMD_ARG_NONE},
2823{0}
2824};
2825
2826/* LMOVE argument table */
2827struct redisCommandArg LMOVE_Args[] = {
2828{"source",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2829{"destination",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_NONE},
2830{"wherefrom",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=LMOVE_wherefrom_Subargs},
2831{"whereto",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=LMOVE_whereto_Subargs},
2832{0}
2833};
2834
2835/********** LMPOP ********************/
2836
2837/* LMPOP history */
2838#define LMPOP_History NULL
2839
2840/* LMPOP tips */
2841#define LMPOP_tips NULL
2842
2843/* LMPOP where argument table */
2844struct redisCommandArg LMPOP_where_Subargs[] = {
2845{"left",ARG_TYPE_PURE_TOKEN,-1,"LEFT",NULL,NULL,CMD_ARG_NONE},
2846{"right",ARG_TYPE_PURE_TOKEN,-1,"RIGHT",NULL,NULL,CMD_ARG_NONE},
2847{0}
2848};
2849
2850/* LMPOP argument table */
2851struct redisCommandArg LMPOP_Args[] = {
2852{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2853{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
2854{"where",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=LMPOP_where_Subargs},
2855{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
2856{0}
2857};
2858
2859/********** LPOP ********************/
2860
2861/* LPOP history */
2862commandHistory LPOP_History[] = {
2863{"6.2.0","Added the `count` argument."},
2864{0}
2865};
2866
2867/* LPOP tips */
2868#define LPOP_tips NULL
2869
2870/* LPOP argument table */
2871struct redisCommandArg LPOP_Args[] = {
2872{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2873{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL},
2874{0}
2875};
2876
2877/********** LPOS ********************/
2878
2879/* LPOS history */
2880#define LPOS_History NULL
2881
2882/* LPOS tips */
2883#define LPOS_tips NULL
2884
2885/* LPOS argument table */
2886struct redisCommandArg LPOS_Args[] = {
2887{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2888{"element",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2889{"rank",ARG_TYPE_INTEGER,-1,"RANK",NULL,NULL,CMD_ARG_OPTIONAL},
2890{"num-matches",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
2891{"len",ARG_TYPE_INTEGER,-1,"MAXLEN",NULL,NULL,CMD_ARG_OPTIONAL},
2892{0}
2893};
2894
2895/********** LPUSH ********************/
2896
2897/* LPUSH history */
2898commandHistory LPUSH_History[] = {
2899{"2.4.0","Accepts multiple `element` arguments."},
2900{0}
2901};
2902
2903/* LPUSH tips */
2904#define LPUSH_tips NULL
2905
2906/* LPUSH argument table */
2907struct redisCommandArg LPUSH_Args[] = {
2908{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2909{"element",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
2910{0}
2911};
2912
2913/********** LPUSHX ********************/
2914
2915/* LPUSHX history */
2916commandHistory LPUSHX_History[] = {
2917{"4.0.0","Accepts multiple `element` arguments."},
2918{0}
2919};
2920
2921/* LPUSHX tips */
2922#define LPUSHX_tips NULL
2923
2924/* LPUSHX argument table */
2925struct redisCommandArg LPUSHX_Args[] = {
2926{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2927{"element",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
2928{0}
2929};
2930
2931/********** LRANGE ********************/
2932
2933/* LRANGE history */
2934#define LRANGE_History NULL
2935
2936/* LRANGE tips */
2937#define LRANGE_tips NULL
2938
2939/* LRANGE argument table */
2940struct redisCommandArg LRANGE_Args[] = {
2941{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2942{"start",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2943{"stop",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2944{0}
2945};
2946
2947/********** LREM ********************/
2948
2949/* LREM history */
2950#define LREM_History NULL
2951
2952/* LREM tips */
2953#define LREM_tips NULL
2954
2955/* LREM argument table */
2956struct redisCommandArg LREM_Args[] = {
2957{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2958{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2959{"element",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2960{0}
2961};
2962
2963/********** LSET ********************/
2964
2965/* LSET history */
2966#define LSET_History NULL
2967
2968/* LSET tips */
2969#define LSET_tips NULL
2970
2971/* LSET argument table */
2972struct redisCommandArg LSET_Args[] = {
2973{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2974{"index",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2975{"element",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2976{0}
2977};
2978
2979/********** LTRIM ********************/
2980
2981/* LTRIM history */
2982#define LTRIM_History NULL
2983
2984/* LTRIM tips */
2985#define LTRIM_tips NULL
2986
2987/* LTRIM argument table */
2988struct redisCommandArg LTRIM_Args[] = {
2989{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
2990{"start",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2991{"stop",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
2992{0}
2993};
2994
2995/********** RPOP ********************/
2996
2997/* RPOP history */
2998commandHistory RPOP_History[] = {
2999{"6.2.0","Added the `count` argument."},
3000{0}
3001};
3002
3003/* RPOP tips */
3004#define RPOP_tips NULL
3005
3006/* RPOP argument table */
3007struct redisCommandArg RPOP_Args[] = {
3008{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
3009{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL},
3010{0}
3011};
3012
3013/********** RPOPLPUSH ********************/
3014
3015/* RPOPLPUSH history */
3016#define RPOPLPUSH_History NULL
3017
3018/* RPOPLPUSH tips */
3019#define RPOPLPUSH_tips NULL
3020
3021/* RPOPLPUSH argument table */
3022struct redisCommandArg RPOPLPUSH_Args[] = {
3023{"source",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
3024{"destination",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_NONE},
3025{0}
3026};
3027
3028/********** RPUSH ********************/
3029
3030/* RPUSH history */
3031commandHistory RPUSH_History[] = {
3032{"2.4.0","Accepts multiple `element` arguments."},
3033{0}
3034};
3035
3036/* RPUSH tips */
3037#define RPUSH_tips NULL
3038
3039/* RPUSH argument table */
3040struct redisCommandArg RPUSH_Args[] = {
3041{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
3042{"element",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3043{0}
3044};
3045
3046/********** RPUSHX ********************/
3047
3048/* RPUSHX history */
3049commandHistory RPUSHX_History[] = {
3050{"4.0.0","Accepts multiple `element` arguments."},
3051{0}
3052};
3053
3054/* RPUSHX tips */
3055#define RPUSHX_tips NULL
3056
3057/* RPUSHX argument table */
3058struct redisCommandArg RPUSHX_Args[] = {
3059{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
3060{"element",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3061{0}
3062};
3063
3064/********** PSUBSCRIBE ********************/
3065
3066/* PSUBSCRIBE history */
3067#define PSUBSCRIBE_History NULL
3068
3069/* PSUBSCRIBE tips */
3070#define PSUBSCRIBE_tips NULL
3071
3072/* PSUBSCRIBE pattern argument table */
3073struct redisCommandArg PSUBSCRIBE_pattern_Subargs[] = {
3074{"pattern",ARG_TYPE_PATTERN,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3075{0}
3076};
3077
3078/* PSUBSCRIBE argument table */
3079struct redisCommandArg PSUBSCRIBE_Args[] = {
3080{"pattern",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=PSUBSCRIBE_pattern_Subargs},
3081{0}
3082};
3083
3084/********** PUBLISH ********************/
3085
3086/* PUBLISH history */
3087#define PUBLISH_History NULL
3088
3089/* PUBLISH tips */
3090#define PUBLISH_tips NULL
3091
3092/* PUBLISH argument table */
3093struct redisCommandArg PUBLISH_Args[] = {
3094{"channel",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3095{"message",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3096{0}
3097};
3098
3099/********** PUBSUB CHANNELS ********************/
3100
3101/* PUBSUB CHANNELS history */
3102#define PUBSUB_CHANNELS_History NULL
3103
3104/* PUBSUB CHANNELS tips */
3105#define PUBSUB_CHANNELS_tips NULL
3106
3107/* PUBSUB CHANNELS argument table */
3108struct redisCommandArg PUBSUB_CHANNELS_Args[] = {
3109{"pattern",ARG_TYPE_PATTERN,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL},
3110{0}
3111};
3112
3113/********** PUBSUB HELP ********************/
3114
3115/* PUBSUB HELP history */
3116#define PUBSUB_HELP_History NULL
3117
3118/* PUBSUB HELP tips */
3119#define PUBSUB_HELP_tips NULL
3120
3121/********** PUBSUB NUMPAT ********************/
3122
3123/* PUBSUB NUMPAT history */
3124#define PUBSUB_NUMPAT_History NULL
3125
3126/* PUBSUB NUMPAT tips */
3127#define PUBSUB_NUMPAT_tips NULL
3128
3129/********** PUBSUB NUMSUB ********************/
3130
3131/* PUBSUB NUMSUB history */
3132#define PUBSUB_NUMSUB_History NULL
3133
3134/* PUBSUB NUMSUB tips */
3135#define PUBSUB_NUMSUB_tips NULL
3136
3137/* PUBSUB NUMSUB argument table */
3138struct redisCommandArg PUBSUB_NUMSUB_Args[] = {
3139{"channel",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
3140{0}
3141};
3142
3143/********** PUBSUB SHARDCHANNELS ********************/
3144
3145/* PUBSUB SHARDCHANNELS history */
3146#define PUBSUB_SHARDCHANNELS_History NULL
3147
3148/* PUBSUB SHARDCHANNELS tips */
3149#define PUBSUB_SHARDCHANNELS_tips NULL
3150
3151/* PUBSUB SHARDCHANNELS argument table */
3152struct redisCommandArg PUBSUB_SHARDCHANNELS_Args[] = {
3153{"pattern",ARG_TYPE_PATTERN,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL},
3154{0}
3155};
3156
3157/********** PUBSUB SHARDNUMSUB ********************/
3158
3159/* PUBSUB SHARDNUMSUB history */
3160#define PUBSUB_SHARDNUMSUB_History NULL
3161
3162/* PUBSUB SHARDNUMSUB tips */
3163#define PUBSUB_SHARDNUMSUB_tips NULL
3164
3165/* PUBSUB SHARDNUMSUB argument table */
3166struct redisCommandArg PUBSUB_SHARDNUMSUB_Args[] = {
3167{"shardchannel",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
3168{0}
3169};
3170
3171/* PUBSUB command table */
3172struct redisCommand PUBSUB_Subcommands[] = {
3173{"channels","List active channels","O(N) where N is the number of active channels, and assuming constant time pattern matching (relatively short channels and patterns)","2.8.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,PUBSUB_CHANNELS_History,PUBSUB_CHANNELS_tips,pubsubCommand,-2,CMD_PUBSUB|CMD_LOADING|CMD_STALE,0,.args=PUBSUB_CHANNELS_Args},
3174{"help","Show helpful text about the different subcommands","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,PUBSUB_HELP_History,PUBSUB_HELP_tips,pubsubCommand,2,CMD_LOADING|CMD_STALE,0},
3175{"numpat","Get the count of unique patterns pattern subscriptions","O(1)","2.8.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,PUBSUB_NUMPAT_History,PUBSUB_NUMPAT_tips,pubsubCommand,2,CMD_PUBSUB|CMD_LOADING|CMD_STALE,0},
3176{"numsub","Get the count of subscribers for channels","O(N) for the NUMSUB subcommand, where N is the number of requested channels","2.8.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,PUBSUB_NUMSUB_History,PUBSUB_NUMSUB_tips,pubsubCommand,-2,CMD_PUBSUB|CMD_LOADING|CMD_STALE,0,.args=PUBSUB_NUMSUB_Args},
3177{"shardchannels","List active shard channels","O(N) where N is the number of active shard channels, and assuming constant time pattern matching (relatively short shard channels).","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,PUBSUB_SHARDCHANNELS_History,PUBSUB_SHARDCHANNELS_tips,pubsubCommand,-2,CMD_PUBSUB|CMD_LOADING|CMD_STALE,0,.args=PUBSUB_SHARDCHANNELS_Args},
3178{"shardnumsub","Get the count of subscribers for shard channels","O(N) for the SHARDNUMSUB subcommand, where N is the number of requested shard channels","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,PUBSUB_SHARDNUMSUB_History,PUBSUB_SHARDNUMSUB_tips,pubsubCommand,-2,CMD_PUBSUB|CMD_LOADING|CMD_STALE,0,.args=PUBSUB_SHARDNUMSUB_Args},
3179{0}
3180};
3181
3182/********** PUBSUB ********************/
3183
3184/* PUBSUB history */
3185#define PUBSUB_History NULL
3186
3187/* PUBSUB tips */
3188#define PUBSUB_tips NULL
3189
3190/********** PUNSUBSCRIBE ********************/
3191
3192/* PUNSUBSCRIBE history */
3193#define PUNSUBSCRIBE_History NULL
3194
3195/* PUNSUBSCRIBE tips */
3196#define PUNSUBSCRIBE_tips NULL
3197
3198/* PUNSUBSCRIBE argument table */
3199struct redisCommandArg PUNSUBSCRIBE_Args[] = {
3200{"pattern",ARG_TYPE_PATTERN,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
3201{0}
3202};
3203
3204/********** SPUBLISH ********************/
3205
3206/* SPUBLISH history */
3207#define SPUBLISH_History NULL
3208
3209/* SPUBLISH tips */
3210#define SPUBLISH_tips NULL
3211
3212/* SPUBLISH argument table */
3213struct redisCommandArg SPUBLISH_Args[] = {
3214{"shardchannel",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3215{"message",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3216{0}
3217};
3218
3219/********** SSUBSCRIBE ********************/
3220
3221/* SSUBSCRIBE history */
3222#define SSUBSCRIBE_History NULL
3223
3224/* SSUBSCRIBE tips */
3225#define SSUBSCRIBE_tips NULL
3226
3227/* SSUBSCRIBE argument table */
3228struct redisCommandArg SSUBSCRIBE_Args[] = {
3229{"shardchannel",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3230{0}
3231};
3232
3233/********** SUBSCRIBE ********************/
3234
3235/* SUBSCRIBE history */
3236#define SUBSCRIBE_History NULL
3237
3238/* SUBSCRIBE tips */
3239#define SUBSCRIBE_tips NULL
3240
3241/* SUBSCRIBE argument table */
3242struct redisCommandArg SUBSCRIBE_Args[] = {
3243{"channel",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3244{0}
3245};
3246
3247/********** SUNSUBSCRIBE ********************/
3248
3249/* SUNSUBSCRIBE history */
3250#define SUNSUBSCRIBE_History NULL
3251
3252/* SUNSUBSCRIBE tips */
3253#define SUNSUBSCRIBE_tips NULL
3254
3255/* SUNSUBSCRIBE argument table */
3256struct redisCommandArg SUNSUBSCRIBE_Args[] = {
3257{"shardchannel",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
3258{0}
3259};
3260
3261/********** UNSUBSCRIBE ********************/
3262
3263/* UNSUBSCRIBE history */
3264#define UNSUBSCRIBE_History NULL
3265
3266/* UNSUBSCRIBE tips */
3267#define UNSUBSCRIBE_tips NULL
3268
3269/* UNSUBSCRIBE argument table */
3270struct redisCommandArg UNSUBSCRIBE_Args[] = {
3271{"channel",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
3272{0}
3273};
3274
3275/********** EVAL ********************/
3276
3277/* EVAL history */
3278#define EVAL_History NULL
3279
3280/* EVAL tips */
3281#define EVAL_tips NULL
3282
3283/* EVAL argument table */
3284struct redisCommandArg EVAL_Args[] = {
3285{"script",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3286{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3287{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
3288{"arg",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
3289{0}
3290};
3291
3292/********** EVALSHA ********************/
3293
3294/* EVALSHA history */
3295#define EVALSHA_History NULL
3296
3297/* EVALSHA tips */
3298#define EVALSHA_tips NULL
3299
3300/* EVALSHA argument table */
3301struct redisCommandArg EVALSHA_Args[] = {
3302{"sha1",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3303{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3304{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
3305{"arg",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
3306{0}
3307};
3308
3309/********** EVALSHA_RO ********************/
3310
3311/* EVALSHA_RO history */
3312#define EVALSHA_RO_History NULL
3313
3314/* EVALSHA_RO tips */
3315#define EVALSHA_RO_tips NULL
3316
3317/* EVALSHA_RO argument table */
3318struct redisCommandArg EVALSHA_RO_Args[] = {
3319{"sha1",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3320{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3321{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3322{"arg",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3323{0}
3324};
3325
3326/********** EVAL_RO ********************/
3327
3328/* EVAL_RO history */
3329#define EVAL_RO_History NULL
3330
3331/* EVAL_RO tips */
3332#define EVAL_RO_tips NULL
3333
3334/* EVAL_RO argument table */
3335struct redisCommandArg EVAL_RO_Args[] = {
3336{"script",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3337{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3338{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3339{"arg",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3340{0}
3341};
3342
3343/********** FCALL ********************/
3344
3345/* FCALL history */
3346#define FCALL_History NULL
3347
3348/* FCALL tips */
3349#define FCALL_tips NULL
3350
3351/* FCALL argument table */
3352struct redisCommandArg FCALL_Args[] = {
3353{"function",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3354{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3355{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3356{"arg",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3357{0}
3358};
3359
3360/********** FCALL_RO ********************/
3361
3362/* FCALL_RO history */
3363#define FCALL_RO_History NULL
3364
3365/* FCALL_RO tips */
3366#define FCALL_RO_tips NULL
3367
3368/* FCALL_RO argument table */
3369struct redisCommandArg FCALL_RO_Args[] = {
3370{"function",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3371{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3372{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3373{"arg",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3374{0}
3375};
3376
3377/********** FUNCTION DELETE ********************/
3378
3379/* FUNCTION DELETE history */
3380#define FUNCTION_DELETE_History NULL
3381
3382/* FUNCTION DELETE tips */
3383const char *FUNCTION_DELETE_tips[] = {
3384"request_policy:all_shards",
3385"response_policy:all_succeeded",
3386NULL
3387};
3388
3389/* FUNCTION DELETE argument table */
3390struct redisCommandArg FUNCTION_DELETE_Args[] = {
3391{"library-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3392{0}
3393};
3394
3395/********** FUNCTION DUMP ********************/
3396
3397/* FUNCTION DUMP history */
3398#define FUNCTION_DUMP_History NULL
3399
3400/* FUNCTION DUMP tips */
3401#define FUNCTION_DUMP_tips NULL
3402
3403/********** FUNCTION FLUSH ********************/
3404
3405/* FUNCTION FLUSH history */
3406#define FUNCTION_FLUSH_History NULL
3407
3408/* FUNCTION FLUSH tips */
3409const char *FUNCTION_FLUSH_tips[] = {
3410"request_policy:all_shards",
3411"response_policy:all_succeeded",
3412NULL
3413};
3414
3415/* FUNCTION FLUSH async argument table */
3416struct redisCommandArg FUNCTION_FLUSH_async_Subargs[] = {
3417{"async",ARG_TYPE_PURE_TOKEN,-1,"ASYNC",NULL,NULL,CMD_ARG_NONE},
3418{"sync",ARG_TYPE_PURE_TOKEN,-1,"SYNC",NULL,NULL,CMD_ARG_NONE},
3419{0}
3420};
3421
3422/* FUNCTION FLUSH argument table */
3423struct redisCommandArg FUNCTION_FLUSH_Args[] = {
3424{"async",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=FUNCTION_FLUSH_async_Subargs},
3425{0}
3426};
3427
3428/********** FUNCTION HELP ********************/
3429
3430/* FUNCTION HELP history */
3431#define FUNCTION_HELP_History NULL
3432
3433/* FUNCTION HELP tips */
3434#define FUNCTION_HELP_tips NULL
3435
3436/********** FUNCTION KILL ********************/
3437
3438/* FUNCTION KILL history */
3439#define FUNCTION_KILL_History NULL
3440
3441/* FUNCTION KILL tips */
3442const char *FUNCTION_KILL_tips[] = {
3443"request_policy:all_shards",
3444"response_policy:one_succeeded",
3445NULL
3446};
3447
3448/********** FUNCTION LIST ********************/
3449
3450/* FUNCTION LIST history */
3451#define FUNCTION_LIST_History NULL
3452
3453/* FUNCTION LIST tips */
3454const char *FUNCTION_LIST_tips[] = {
3455"nondeterministic_output_order",
3456NULL
3457};
3458
3459/* FUNCTION LIST argument table */
3460struct redisCommandArg FUNCTION_LIST_Args[] = {
3461{"library-name-pattern",ARG_TYPE_STRING,-1,"LIBRARYNAME",NULL,NULL,CMD_ARG_OPTIONAL},
3462{"withcode",ARG_TYPE_PURE_TOKEN,-1,"WITHCODE",NULL,NULL,CMD_ARG_OPTIONAL},
3463{0}
3464};
3465
3466/********** FUNCTION LOAD ********************/
3467
3468/* FUNCTION LOAD history */
3469#define FUNCTION_LOAD_History NULL
3470
3471/* FUNCTION LOAD tips */
3472const char *FUNCTION_LOAD_tips[] = {
3473"request_policy:all_shards",
3474"response_policy:all_succeeded",
3475NULL
3476};
3477
3478/* FUNCTION LOAD argument table */
3479struct redisCommandArg FUNCTION_LOAD_Args[] = {
3480{"replace",ARG_TYPE_PURE_TOKEN,-1,"REPLACE",NULL,NULL,CMD_ARG_OPTIONAL},
3481{"function-code",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3482{0}
3483};
3484
3485/********** FUNCTION RESTORE ********************/
3486
3487/* FUNCTION RESTORE history */
3488#define FUNCTION_RESTORE_History NULL
3489
3490/* FUNCTION RESTORE tips */
3491const char *FUNCTION_RESTORE_tips[] = {
3492"request_policy:all_shards",
3493"response_policy:all_succeeded",
3494NULL
3495};
3496
3497/* FUNCTION RESTORE policy argument table */
3498struct redisCommandArg FUNCTION_RESTORE_policy_Subargs[] = {
3499{"flush",ARG_TYPE_PURE_TOKEN,-1,"FLUSH",NULL,NULL,CMD_ARG_NONE},
3500{"append",ARG_TYPE_PURE_TOKEN,-1,"APPEND",NULL,NULL,CMD_ARG_NONE},
3501{"replace",ARG_TYPE_PURE_TOKEN,-1,"REPLACE",NULL,NULL,CMD_ARG_NONE},
3502{0}
3503};
3504
3505/* FUNCTION RESTORE argument table */
3506struct redisCommandArg FUNCTION_RESTORE_Args[] = {
3507{"serialized-value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3508{"policy",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=FUNCTION_RESTORE_policy_Subargs},
3509{0}
3510};
3511
3512/********** FUNCTION STATS ********************/
3513
3514/* FUNCTION STATS history */
3515#define FUNCTION_STATS_History NULL
3516
3517/* FUNCTION STATS tips */
3518const char *FUNCTION_STATS_tips[] = {
3519"nondeterministic_output",
3520"request_policy:all_shards",
3521"response_policy:special",
3522NULL
3523};
3524
3525/* FUNCTION command table */
3526struct redisCommand FUNCTION_Subcommands[] = {
3527{"delete","Delete a function by name","O(1)","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FUNCTION_DELETE_History,FUNCTION_DELETE_tips,functionDeleteCommand,3,CMD_NOSCRIPT|CMD_WRITE,ACL_CATEGORY_SCRIPTING,.args=FUNCTION_DELETE_Args},
3528{"dump","Dump all functions into a serialized binary payload","O(N) where N is the number of functions","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FUNCTION_DUMP_History,FUNCTION_DUMP_tips,functionDumpCommand,2,CMD_NOSCRIPT,ACL_CATEGORY_SCRIPTING},
3529{"flush","Deleting all functions","O(N) where N is the number of functions deleted","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FUNCTION_FLUSH_History,FUNCTION_FLUSH_tips,functionFlushCommand,-2,CMD_NOSCRIPT|CMD_WRITE,ACL_CATEGORY_SCRIPTING,.args=FUNCTION_FLUSH_Args},
3530{"help","Show helpful text about the different subcommands","O(1)","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FUNCTION_HELP_History,FUNCTION_HELP_tips,functionHelpCommand,2,CMD_LOADING|CMD_STALE,ACL_CATEGORY_SCRIPTING},
3531{"kill","Kill the function currently in execution.","O(1)","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FUNCTION_KILL_History,FUNCTION_KILL_tips,functionKillCommand,2,CMD_NOSCRIPT|CMD_ALLOW_BUSY,ACL_CATEGORY_SCRIPTING},
3532{"list","List information about all the functions","O(N) where N is the number of functions","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FUNCTION_LIST_History,FUNCTION_LIST_tips,functionListCommand,-2,CMD_NOSCRIPT,ACL_CATEGORY_SCRIPTING,.args=FUNCTION_LIST_Args},
3533{"load","Create a function with the given arguments (name, code, description)","O(1) (considering compilation time is redundant)","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FUNCTION_LOAD_History,FUNCTION_LOAD_tips,functionLoadCommand,-3,CMD_NOSCRIPT|CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_SCRIPTING,.args=FUNCTION_LOAD_Args},
3534{"restore","Restore all the functions on the given payload","O(N) where N is the number of functions on the payload","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FUNCTION_RESTORE_History,FUNCTION_RESTORE_tips,functionRestoreCommand,-3,CMD_NOSCRIPT|CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_SCRIPTING,.args=FUNCTION_RESTORE_Args},
3535{"stats","Return information about the function currently running (name, description, duration)","O(1)","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FUNCTION_STATS_History,FUNCTION_STATS_tips,functionStatsCommand,2,CMD_NOSCRIPT|CMD_ALLOW_BUSY,ACL_CATEGORY_SCRIPTING},
3536{0}
3537};
3538
3539/********** FUNCTION ********************/
3540
3541/* FUNCTION history */
3542#define FUNCTION_History NULL
3543
3544/* FUNCTION tips */
3545#define FUNCTION_tips NULL
3546
3547/********** SCRIPT DEBUG ********************/
3548
3549/* SCRIPT DEBUG history */
3550#define SCRIPT_DEBUG_History NULL
3551
3552/* SCRIPT DEBUG tips */
3553#define SCRIPT_DEBUG_tips NULL
3554
3555/* SCRIPT DEBUG mode argument table */
3556struct redisCommandArg SCRIPT_DEBUG_mode_Subargs[] = {
3557{"yes",ARG_TYPE_PURE_TOKEN,-1,"YES",NULL,NULL,CMD_ARG_NONE},
3558{"sync",ARG_TYPE_PURE_TOKEN,-1,"SYNC",NULL,NULL,CMD_ARG_NONE},
3559{"no",ARG_TYPE_PURE_TOKEN,-1,"NO",NULL,NULL,CMD_ARG_NONE},
3560{0}
3561};
3562
3563/* SCRIPT DEBUG argument table */
3564struct redisCommandArg SCRIPT_DEBUG_Args[] = {
3565{"mode",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=SCRIPT_DEBUG_mode_Subargs},
3566{0}
3567};
3568
3569/********** SCRIPT EXISTS ********************/
3570
3571/* SCRIPT EXISTS history */
3572#define SCRIPT_EXISTS_History NULL
3573
3574/* SCRIPT EXISTS tips */
3575const char *SCRIPT_EXISTS_tips[] = {
3576"request_policy:all_shards",
3577"response_policy:agg_logical_and",
3578NULL
3579};
3580
3581/* SCRIPT EXISTS argument table */
3582struct redisCommandArg SCRIPT_EXISTS_Args[] = {
3583{"sha1",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3584{0}
3585};
3586
3587/********** SCRIPT FLUSH ********************/
3588
3589/* SCRIPT FLUSH history */
3590commandHistory SCRIPT_FLUSH_History[] = {
3591{"6.2.0","Added the `ASYNC` and `SYNC` flushing mode modifiers."},
3592{0}
3593};
3594
3595/* SCRIPT FLUSH tips */
3596const char *SCRIPT_FLUSH_tips[] = {
3597"request_policy:all_nodes",
3598"response_policy:all_succeeded",
3599NULL
3600};
3601
3602/* SCRIPT FLUSH async argument table */
3603struct redisCommandArg SCRIPT_FLUSH_async_Subargs[] = {
3604{"async",ARG_TYPE_PURE_TOKEN,-1,"ASYNC",NULL,NULL,CMD_ARG_NONE},
3605{"sync",ARG_TYPE_PURE_TOKEN,-1,"SYNC",NULL,NULL,CMD_ARG_NONE},
3606{0}
3607};
3608
3609/* SCRIPT FLUSH argument table */
3610struct redisCommandArg SCRIPT_FLUSH_Args[] = {
3611{"async",ARG_TYPE_ONEOF,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=SCRIPT_FLUSH_async_Subargs},
3612{0}
3613};
3614
3615/********** SCRIPT HELP ********************/
3616
3617/* SCRIPT HELP history */
3618#define SCRIPT_HELP_History NULL
3619
3620/* SCRIPT HELP tips */
3621#define SCRIPT_HELP_tips NULL
3622
3623/********** SCRIPT KILL ********************/
3624
3625/* SCRIPT KILL history */
3626#define SCRIPT_KILL_History NULL
3627
3628/* SCRIPT KILL tips */
3629const char *SCRIPT_KILL_tips[] = {
3630"request_policy:all_shards",
3631"response_policy:one_succeeded",
3632NULL
3633};
3634
3635/********** SCRIPT LOAD ********************/
3636
3637/* SCRIPT LOAD history */
3638#define SCRIPT_LOAD_History NULL
3639
3640/* SCRIPT LOAD tips */
3641const char *SCRIPT_LOAD_tips[] = {
3642"request_policy:all_nodes",
3643"response_policy:all_succeeded",
3644NULL
3645};
3646
3647/* SCRIPT LOAD argument table */
3648struct redisCommandArg SCRIPT_LOAD_Args[] = {
3649{"script",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3650{0}
3651};
3652
3653/* SCRIPT command table */
3654struct redisCommand SCRIPT_Subcommands[] = {
3655{"debug","Set the debug mode for executed scripts.","O(1)","3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,SCRIPT_DEBUG_History,SCRIPT_DEBUG_tips,scriptCommand,3,CMD_NOSCRIPT,ACL_CATEGORY_SCRIPTING,.args=SCRIPT_DEBUG_Args},
3656{"exists","Check existence of scripts in the script cache.","O(N) with N being the number of scripts to check (so checking a single script is an O(1) operation).","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,SCRIPT_EXISTS_History,SCRIPT_EXISTS_tips,scriptCommand,-3,CMD_NOSCRIPT,ACL_CATEGORY_SCRIPTING,.args=SCRIPT_EXISTS_Args},
3657{"flush","Remove all the scripts from the script cache.","O(N) with N being the number of scripts in cache","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,SCRIPT_FLUSH_History,SCRIPT_FLUSH_tips,scriptCommand,-2,CMD_NOSCRIPT,ACL_CATEGORY_SCRIPTING,.args=SCRIPT_FLUSH_Args},
3658{"help","Show helpful text about the different subcommands","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,SCRIPT_HELP_History,SCRIPT_HELP_tips,scriptCommand,2,CMD_LOADING|CMD_STALE,ACL_CATEGORY_SCRIPTING},
3659{"kill","Kill the script currently in execution.","O(1)","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,SCRIPT_KILL_History,SCRIPT_KILL_tips,scriptCommand,2,CMD_NOSCRIPT|CMD_ALLOW_BUSY,ACL_CATEGORY_SCRIPTING},
3660{"load","Load the specified Lua script into the script cache.","O(N) with N being the length in bytes of the script body.","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,SCRIPT_LOAD_History,SCRIPT_LOAD_tips,scriptCommand,3,CMD_NOSCRIPT|CMD_STALE,ACL_CATEGORY_SCRIPTING,.args=SCRIPT_LOAD_Args},
3661{0}
3662};
3663
3664/********** SCRIPT ********************/
3665
3666/* SCRIPT history */
3667#define SCRIPT_History NULL
3668
3669/* SCRIPT tips */
3670#define SCRIPT_tips NULL
3671
3672/********** SENTINEL CKQUORUM ********************/
3673
3674/* SENTINEL CKQUORUM history */
3675#define SENTINEL_CKQUORUM_History NULL
3676
3677/* SENTINEL CKQUORUM tips */
3678#define SENTINEL_CKQUORUM_tips NULL
3679
3680/* SENTINEL CKQUORUM argument table */
3681struct redisCommandArg SENTINEL_CKQUORUM_Args[] = {
3682{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3683{0}
3684};
3685
3686/********** SENTINEL CONFIG ********************/
3687
3688/* SENTINEL CONFIG history */
3689#define SENTINEL_CONFIG_History NULL
3690
3691/* SENTINEL CONFIG tips */
3692#define SENTINEL_CONFIG_tips NULL
3693
3694/* SENTINEL CONFIG set_or_get set_param_value argument table */
3695struct redisCommandArg SENTINEL_CONFIG_set_or_get_set_param_value_Subargs[] = {
3696{"parameter",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3697{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3698{0}
3699};
3700
3701/* SENTINEL CONFIG set_or_get argument table */
3702struct redisCommandArg SENTINEL_CONFIG_set_or_get_Subargs[] = {
3703{"set_param_value",ARG_TYPE_BLOCK,-1,"SET",NULL,NULL,CMD_ARG_MULTIPLE,.subargs=SENTINEL_CONFIG_set_or_get_set_param_value_Subargs},
3704{"parameter",ARG_TYPE_STRING,-1,"GET",NULL,NULL,CMD_ARG_MULTIPLE},
3705{0}
3706};
3707
3708/* SENTINEL CONFIG argument table */
3709struct redisCommandArg SENTINEL_CONFIG_Args[] = {
3710{"set_or_get",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=SENTINEL_CONFIG_set_or_get_Subargs},
3711{0}
3712};
3713
3714/********** SENTINEL DEBUG ********************/
3715
3716/* SENTINEL DEBUG history */
3717#define SENTINEL_DEBUG_History NULL
3718
3719/* SENTINEL DEBUG tips */
3720#define SENTINEL_DEBUG_tips NULL
3721
3722/* SENTINEL DEBUG parameter_value argument table */
3723struct redisCommandArg SENTINEL_DEBUG_parameter_value_Subargs[] = {
3724{"parameter",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3725{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3726{0}
3727};
3728
3729/* SENTINEL DEBUG argument table */
3730struct redisCommandArg SENTINEL_DEBUG_Args[] = {
3731{"parameter_value",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=SENTINEL_DEBUG_parameter_value_Subargs},
3732{0}
3733};
3734
3735/********** SENTINEL FAILOVER ********************/
3736
3737/* SENTINEL FAILOVER history */
3738#define SENTINEL_FAILOVER_History NULL
3739
3740/* SENTINEL FAILOVER tips */
3741#define SENTINEL_FAILOVER_tips NULL
3742
3743/* SENTINEL FAILOVER argument table */
3744struct redisCommandArg SENTINEL_FAILOVER_Args[] = {
3745{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3746{0}
3747};
3748
3749/********** SENTINEL FLUSHCONFIG ********************/
3750
3751/* SENTINEL FLUSHCONFIG history */
3752#define SENTINEL_FLUSHCONFIG_History NULL
3753
3754/* SENTINEL FLUSHCONFIG tips */
3755#define SENTINEL_FLUSHCONFIG_tips NULL
3756
3757/********** SENTINEL GET_MASTER_ADDR_BY_NAME ********************/
3758
3759/* SENTINEL GET_MASTER_ADDR_BY_NAME history */
3760#define SENTINEL_GET_MASTER_ADDR_BY_NAME_History NULL
3761
3762/* SENTINEL GET_MASTER_ADDR_BY_NAME tips */
3763#define SENTINEL_GET_MASTER_ADDR_BY_NAME_tips NULL
3764
3765/* SENTINEL GET_MASTER_ADDR_BY_NAME argument table */
3766struct redisCommandArg SENTINEL_GET_MASTER_ADDR_BY_NAME_Args[] = {
3767{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3768{0}
3769};
3770
3771/********** SENTINEL HELP ********************/
3772
3773/* SENTINEL HELP history */
3774#define SENTINEL_HELP_History NULL
3775
3776/* SENTINEL HELP tips */
3777#define SENTINEL_HELP_tips NULL
3778
3779/********** SENTINEL INFO_CACHE ********************/
3780
3781/* SENTINEL INFO_CACHE history */
3782#define SENTINEL_INFO_CACHE_History NULL
3783
3784/* SENTINEL INFO_CACHE tips */
3785#define SENTINEL_INFO_CACHE_tips NULL
3786
3787/* SENTINEL INFO_CACHE argument table */
3788struct redisCommandArg SENTINEL_INFO_CACHE_Args[] = {
3789{"nodename",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
3790{0}
3791};
3792
3793/********** SENTINEL IS_MASTER_DOWN_BY_ADDR ********************/
3794
3795/* SENTINEL IS_MASTER_DOWN_BY_ADDR history */
3796#define SENTINEL_IS_MASTER_DOWN_BY_ADDR_History NULL
3797
3798/* SENTINEL IS_MASTER_DOWN_BY_ADDR tips */
3799#define SENTINEL_IS_MASTER_DOWN_BY_ADDR_tips NULL
3800
3801/* SENTINEL IS_MASTER_DOWN_BY_ADDR argument table */
3802struct redisCommandArg SENTINEL_IS_MASTER_DOWN_BY_ADDR_Args[] = {
3803{"ip",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3804{"port",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3805{"current-epoch",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3806{"runid",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3807{0}
3808};
3809
3810/********** SENTINEL MASTER ********************/
3811
3812/* SENTINEL MASTER history */
3813#define SENTINEL_MASTER_History NULL
3814
3815/* SENTINEL MASTER tips */
3816#define SENTINEL_MASTER_tips NULL
3817
3818/* SENTINEL MASTER argument table */
3819struct redisCommandArg SENTINEL_MASTER_Args[] = {
3820{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3821{0}
3822};
3823
3824/********** SENTINEL MASTERS ********************/
3825
3826/* SENTINEL MASTERS history */
3827#define SENTINEL_MASTERS_History NULL
3828
3829/* SENTINEL MASTERS tips */
3830#define SENTINEL_MASTERS_tips NULL
3831
3832/********** SENTINEL MONITOR ********************/
3833
3834/* SENTINEL MONITOR history */
3835#define SENTINEL_MONITOR_History NULL
3836
3837/* SENTINEL MONITOR tips */
3838#define SENTINEL_MONITOR_tips NULL
3839
3840/* SENTINEL MONITOR argument table */
3841struct redisCommandArg SENTINEL_MONITOR_Args[] = {
3842{"name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3843{"ip",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3844{"port",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3845{"quorum",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3846{0}
3847};
3848
3849/********** SENTINEL MYID ********************/
3850
3851/* SENTINEL MYID history */
3852#define SENTINEL_MYID_History NULL
3853
3854/* SENTINEL MYID tips */
3855#define SENTINEL_MYID_tips NULL
3856
3857/********** SENTINEL PENDING_SCRIPTS ********************/
3858
3859/* SENTINEL PENDING_SCRIPTS history */
3860#define SENTINEL_PENDING_SCRIPTS_History NULL
3861
3862/* SENTINEL PENDING_SCRIPTS tips */
3863#define SENTINEL_PENDING_SCRIPTS_tips NULL
3864
3865/********** SENTINEL REMOVE ********************/
3866
3867/* SENTINEL REMOVE history */
3868#define SENTINEL_REMOVE_History NULL
3869
3870/* SENTINEL REMOVE tips */
3871#define SENTINEL_REMOVE_tips NULL
3872
3873/* SENTINEL REMOVE argument table */
3874struct redisCommandArg SENTINEL_REMOVE_Args[] = {
3875{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3876{0}
3877};
3878
3879/********** SENTINEL REPLICAS ********************/
3880
3881/* SENTINEL REPLICAS history */
3882#define SENTINEL_REPLICAS_History NULL
3883
3884/* SENTINEL REPLICAS tips */
3885#define SENTINEL_REPLICAS_tips NULL
3886
3887/* SENTINEL REPLICAS argument table */
3888struct redisCommandArg SENTINEL_REPLICAS_Args[] = {
3889{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3890{0}
3891};
3892
3893/********** SENTINEL RESET ********************/
3894
3895/* SENTINEL RESET history */
3896#define SENTINEL_RESET_History NULL
3897
3898/* SENTINEL RESET tips */
3899#define SENTINEL_RESET_tips NULL
3900
3901/* SENTINEL RESET argument table */
3902struct redisCommandArg SENTINEL_RESET_Args[] = {
3903{"pattern",ARG_TYPE_PATTERN,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3904{0}
3905};
3906
3907/********** SENTINEL SENTINELS ********************/
3908
3909/* SENTINEL SENTINELS history */
3910#define SENTINEL_SENTINELS_History NULL
3911
3912/* SENTINEL SENTINELS tips */
3913#define SENTINEL_SENTINELS_tips NULL
3914
3915/* SENTINEL SENTINELS argument table */
3916struct redisCommandArg SENTINEL_SENTINELS_Args[] = {
3917{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3918{0}
3919};
3920
3921/********** SENTINEL SET ********************/
3922
3923/* SENTINEL SET history */
3924#define SENTINEL_SET_History NULL
3925
3926/* SENTINEL SET tips */
3927#define SENTINEL_SET_tips NULL
3928
3929/* SENTINEL SET option_value argument table */
3930struct redisCommandArg SENTINEL_SET_option_value_Subargs[] = {
3931{"option",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3932{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3933{0}
3934};
3935
3936/* SENTINEL SET argument table */
3937struct redisCommandArg SENTINEL_SET_Args[] = {
3938{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3939{"option_value",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=SENTINEL_SET_option_value_Subargs},
3940{0}
3941};
3942
3943/********** SENTINEL SIMULATE_FAILURE ********************/
3944
3945/* SENTINEL SIMULATE_FAILURE history */
3946#define SENTINEL_SIMULATE_FAILURE_History NULL
3947
3948/* SENTINEL SIMULATE_FAILURE tips */
3949#define SENTINEL_SIMULATE_FAILURE_tips NULL
3950
3951/* SENTINEL SIMULATE_FAILURE mode argument table */
3952struct redisCommandArg SENTINEL_SIMULATE_FAILURE_mode_Subargs[] = {
3953{"crash-after-election",ARG_TYPE_PURE_TOKEN,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3954{"crash-after-promotion",ARG_TYPE_PURE_TOKEN,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3955{"help",ARG_TYPE_PURE_TOKEN,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3956{0}
3957};
3958
3959/* SENTINEL SIMULATE_FAILURE argument table */
3960struct redisCommandArg SENTINEL_SIMULATE_FAILURE_Args[] = {
3961{"mode",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE,.subargs=SENTINEL_SIMULATE_FAILURE_mode_Subargs},
3962{0}
3963};
3964
3965/********** SENTINEL SLAVES ********************/
3966
3967/* SENTINEL SLAVES history */
3968#define SENTINEL_SLAVES_History NULL
3969
3970/* SENTINEL SLAVES tips */
3971#define SENTINEL_SLAVES_tips NULL
3972
3973/* SENTINEL SLAVES argument table */
3974struct redisCommandArg SENTINEL_SLAVES_Args[] = {
3975{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
3976{0}
3977};
3978
3979/* SENTINEL command table */
3980struct redisCommand SENTINEL_Subcommands[] = {
3981{"ckquorum","Check for a Sentinel quorum",NULL,"2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_CKQUORUM_History,SENTINEL_CKQUORUM_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_CKQUORUM_Args},
3982{"config","Configure Sentinel","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_CONFIG_History,SENTINEL_CONFIG_tips,sentinelCommand,-3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_CONFIG_Args},
3983{"debug","List or update the current configurable parameters","O(N) where N is the number of configurable parameters","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_DEBUG_History,SENTINEL_DEBUG_tips,sentinelCommand,-2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_DEBUG_Args},
3984{"failover","Force a failover",NULL,"2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_FAILOVER_History,SENTINEL_FAILOVER_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_FAILOVER_Args},
3985{"flushconfig","Rewrite configuration file","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_FLUSHCONFIG_History,SENTINEL_FLUSHCONFIG_tips,sentinelCommand,2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0},
3986{"get-master-addr-by-name","Get port and address of a master","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_GET_MASTER_ADDR_BY_NAME_History,SENTINEL_GET_MASTER_ADDR_BY_NAME_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_GET_MASTER_ADDR_BY_NAME_Args},
3987{"help","Show helpful text about the different subcommands","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_HELP_History,SENTINEL_HELP_tips,sentinelCommand,2,CMD_LOADING|CMD_STALE|CMD_SENTINEL|CMD_ONLY_SENTINEL,0},
3988{"info-cache","Get cached INFO from the instances in the deployment","O(N) where N is the number of instances","3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_INFO_CACHE_History,SENTINEL_INFO_CACHE_tips,sentinelCommand,-3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_INFO_CACHE_Args},
3989{"is-master-down-by-addr","Check if a master is down","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_IS_MASTER_DOWN_BY_ADDR_History,SENTINEL_IS_MASTER_DOWN_BY_ADDR_tips,sentinelCommand,6,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_IS_MASTER_DOWN_BY_ADDR_Args},
3990{"master","Shows the state of a master","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_MASTER_History,SENTINEL_MASTER_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_MASTER_Args},
3991{"masters","List the monitored masters","O(N) where N is the number of masters","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_MASTERS_History,SENTINEL_MASTERS_tips,sentinelCommand,2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0},
3992{"monitor","Start monitoring","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_MONITOR_History,SENTINEL_MONITOR_tips,sentinelCommand,6,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_MONITOR_Args},
3993{"myid","Get the Sentinel instance ID","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_MYID_History,SENTINEL_MYID_tips,sentinelCommand,2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0},
3994{"pending-scripts","Get information about pending scripts",NULL,"2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_PENDING_SCRIPTS_History,SENTINEL_PENDING_SCRIPTS_tips,sentinelCommand,2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0},
3995{"remove","Stop monitoring","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_REMOVE_History,SENTINEL_REMOVE_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_REMOVE_Args},
3996{"replicas","List the monitored replicas","O(N) where N is the number of replicas","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_REPLICAS_History,SENTINEL_REPLICAS_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_REPLICAS_Args},
3997{"reset","Reset masters by name pattern","O(N) where N is the number of monitored masters","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_RESET_History,SENTINEL_RESET_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_RESET_Args},
3998{"sentinels","List the Sentinel instances","O(N) where N is the number of Sentinels","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_SENTINELS_History,SENTINEL_SENTINELS_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_SENTINELS_Args},
3999{"set","Change the configuration of a monitored master","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_SET_History,SENTINEL_SET_tips,sentinelCommand,-5,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_SET_Args},
4000{"simulate-failure","Simulate failover scenarios",NULL,"3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_SIMULATE_FAILURE_History,SENTINEL_SIMULATE_FAILURE_tips,sentinelCommand,-3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_SIMULATE_FAILURE_Args},
4001{"slaves","List the monitored slaves","O(N) where N is the number of slaves","2.8.0",CMD_DOC_DEPRECATED,"`SENTINEL REPLICAS`","5.0.0",COMMAND_GROUP_SENTINEL,SENTINEL_SLAVES_History,SENTINEL_SLAVES_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_SLAVES_Args},
4002{0}
4003};
4004
4005/********** SENTINEL ********************/
4006
4007/* SENTINEL history */
4008#define SENTINEL_History NULL
4009
4010/* SENTINEL tips */
4011#define SENTINEL_tips NULL
4012
4013/********** ACL CAT ********************/
4014
4015/* ACL CAT history */
4016#define ACL_CAT_History NULL
4017
4018/* ACL CAT tips */
4019#define ACL_CAT_tips NULL
4020
4021/* ACL CAT argument table */
4022struct redisCommandArg ACL_CAT_Args[] = {
4023{"categoryname",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL},
4024{0}
4025};
4026
4027/********** ACL DELUSER ********************/
4028
4029/* ACL DELUSER history */
4030#define ACL_DELUSER_History NULL
4031
4032/* ACL DELUSER tips */
4033#define ACL_DELUSER_tips NULL
4034
4035/* ACL DELUSER argument table */
4036struct redisCommandArg ACL_DELUSER_Args[] = {
4037{"username",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
4038{0}
4039};
4040
4041/********** ACL DRYRUN ********************/
4042
4043/* ACL DRYRUN history */
4044#define ACL_DRYRUN_History NULL
4045
4046/* ACL DRYRUN tips */
4047#define ACL_DRYRUN_tips NULL
4048
4049/* ACL DRYRUN argument table */
4050struct redisCommandArg ACL_DRYRUN_Args[] = {
4051{"username",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4052{"command",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4053{"arg",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
4054{0}
4055};
4056
4057/********** ACL GENPASS ********************/
4058
4059/* ACL GENPASS history */
4060#define ACL_GENPASS_History NULL
4061
4062/* ACL GENPASS tips */
4063#define ACL_GENPASS_tips NULL
4064
4065/* ACL GENPASS argument table */
4066struct redisCommandArg ACL_GENPASS_Args[] = {
4067{"bits",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL},
4068{0}
4069};
4070
4071/********** ACL GETUSER ********************/
4072
4073/* ACL GETUSER history */
4074commandHistory ACL_GETUSER_History[] = {
4075{"6.2.0","Added Pub/Sub channel patterns."},
4076{"7.0.0","Added selectors and changed the format of key and channel patterns from a list to their rule representation."},
4077{0}
4078};
4079
4080/* ACL GETUSER tips */
4081#define ACL_GETUSER_tips NULL
4082
4083/* ACL GETUSER argument table */
4084struct redisCommandArg ACL_GETUSER_Args[] = {
4085{"username",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4086{0}
4087};
4088
4089/********** ACL HELP ********************/
4090
4091/* ACL HELP history */
4092#define ACL_HELP_History NULL
4093
4094/* ACL HELP tips */
4095#define ACL_HELP_tips NULL
4096
4097/********** ACL LIST ********************/
4098
4099/* ACL LIST history */
4100#define ACL_LIST_History NULL
4101
4102/* ACL LIST tips */
4103#define ACL_LIST_tips NULL
4104
4105/********** ACL LOAD ********************/
4106
4107/* ACL LOAD history */
4108#define ACL_LOAD_History NULL
4109
4110/* ACL LOAD tips */
4111#define ACL_LOAD_tips NULL
4112
4113/********** ACL LOG ********************/
4114
4115/* ACL LOG history */
4116#define ACL_LOG_History NULL
4117
4118/* ACL LOG tips */
4119#define ACL_LOG_tips NULL
4120
4121/* ACL LOG operation argument table */
4122struct redisCommandArg ACL_LOG_operation_Subargs[] = {
4123{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4124{"reset",ARG_TYPE_PURE_TOKEN,-1,"RESET",NULL,NULL,CMD_ARG_NONE},
4125{0}
4126};
4127
4128/* ACL LOG argument table */
4129struct redisCommandArg ACL_LOG_Args[] = {
4130{"operation",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ACL_LOG_operation_Subargs},
4131{0}
4132};
4133
4134/********** ACL SAVE ********************/
4135
4136/* ACL SAVE history */
4137#define ACL_SAVE_History NULL
4138
4139/* ACL SAVE tips */
4140#define ACL_SAVE_tips NULL
4141
4142/********** ACL SETUSER ********************/
4143
4144/* ACL SETUSER history */
4145commandHistory ACL_SETUSER_History[] = {
4146{"6.2.0","Added Pub/Sub channel patterns."},
4147{"7.0.0","Added selectors and key based permissions."},
4148{0}
4149};
4150
4151/* ACL SETUSER tips */
4152#define ACL_SETUSER_tips NULL
4153
4154/* ACL SETUSER argument table */
4155struct redisCommandArg ACL_SETUSER_Args[] = {
4156{"username",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4157{"rule",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
4158{0}
4159};
4160
4161/********** ACL USERS ********************/
4162
4163/* ACL USERS history */
4164#define ACL_USERS_History NULL
4165
4166/* ACL USERS tips */
4167#define ACL_USERS_tips NULL
4168
4169/********** ACL WHOAMI ********************/
4170
4171/* ACL WHOAMI history */
4172#define ACL_WHOAMI_History NULL
4173
4174/* ACL WHOAMI tips */
4175#define ACL_WHOAMI_tips NULL
4176
4177/* ACL command table */
4178struct redisCommand ACL_Subcommands[] = {
4179{"cat","List the ACL categories or the commands inside a category","O(1) since the categories and commands are a fixed set.","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_CAT_History,ACL_CAT_tips,aclCommand,-2,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0,.args=ACL_CAT_Args},
4180{"deluser","Remove the specified ACL users and the associated rules","O(1) amortized time considering the typical user.","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_DELUSER_History,ACL_DELUSER_tips,aclCommand,-3,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0,.args=ACL_DELUSER_Args},
4181{"dryrun","Returns whether the user can execute the given command without executing the command.","O(1).","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_DRYRUN_History,ACL_DRYRUN_tips,aclCommand,-4,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0,.args=ACL_DRYRUN_Args},
4182{"genpass","Generate a pseudorandom secure password to use for ACL users","O(1)","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_GENPASS_History,ACL_GENPASS_tips,aclCommand,-2,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0,.args=ACL_GENPASS_Args},
4183{"getuser","Get the rules for a specific ACL user","O(N). Where N is the number of password, command and pattern rules that the user has.","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_GETUSER_History,ACL_GETUSER_tips,aclCommand,3,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0,.args=ACL_GETUSER_Args},
4184{"help","Show helpful text about the different subcommands","O(1)","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_HELP_History,ACL_HELP_tips,aclCommand,2,CMD_LOADING|CMD_STALE|CMD_SENTINEL,0},
4185{"list","List the current ACL rules in ACL config file format","O(N). Where N is the number of configured users.","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_LIST_History,ACL_LIST_tips,aclCommand,2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0},
4186{"load","Reload the ACLs from the configured ACL file","O(N). Where N is the number of configured users.","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_LOAD_History,ACL_LOAD_tips,aclCommand,2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0},
4187{"log","List latest events denied because of ACLs in place","O(N) with N being the number of entries shown.","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_LOG_History,ACL_LOG_tips,aclCommand,-2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0,.args=ACL_LOG_Args},
4188{"save","Save the current ACL rules in the configured ACL file","O(N). Where N is the number of configured users.","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_SAVE_History,ACL_SAVE_tips,aclCommand,2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0},
4189{"setuser","Modify or create the rules for a specific ACL user","O(N). Where N is the number of rules provided.","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_SETUSER_History,ACL_SETUSER_tips,aclCommand,-3,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0,.args=ACL_SETUSER_Args},
4190{"users","List the username of all the configured ACL rules","O(N). Where N is the number of configured users.","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_USERS_History,ACL_USERS_tips,aclCommand,2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0},
4191{"whoami","Return the name of the user associated to the current connection","O(1)","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_WHOAMI_History,ACL_WHOAMI_tips,aclCommand,2,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0},
4192{0}
4193};
4194
4195/********** ACL ********************/
4196
4197/* ACL history */
4198#define ACL_History NULL
4199
4200/* ACL tips */
4201#define ACL_tips NULL
4202
4203/********** BGREWRITEAOF ********************/
4204
4205/* BGREWRITEAOF history */
4206#define BGREWRITEAOF_History NULL
4207
4208/* BGREWRITEAOF tips */
4209#define BGREWRITEAOF_tips NULL
4210
4211/********** BGSAVE ********************/
4212
4213/* BGSAVE history */
4214commandHistory BGSAVE_History[] = {
4215{"3.2.2","Added the `SCHEDULE` option."},
4216{0}
4217};
4218
4219/* BGSAVE tips */
4220#define BGSAVE_tips NULL
4221
4222/* BGSAVE argument table */
4223struct redisCommandArg BGSAVE_Args[] = {
4224{"schedule",ARG_TYPE_PURE_TOKEN,-1,"SCHEDULE",NULL,"3.2.2",CMD_ARG_OPTIONAL},
4225{0}
4226};
4227
4228/********** COMMAND COUNT ********************/
4229
4230/* COMMAND COUNT history */
4231#define COMMAND_COUNT_History NULL
4232
4233/* COMMAND COUNT tips */
4234#define COMMAND_COUNT_tips NULL
4235
4236/********** COMMAND DOCS ********************/
4237
4238/* COMMAND DOCS history */
4239#define COMMAND_DOCS_History NULL
4240
4241/* COMMAND DOCS tips */
4242const char *COMMAND_DOCS_tips[] = {
4243"nondeterministic_output_order",
4244NULL
4245};
4246
4247/* COMMAND DOCS argument table */
4248struct redisCommandArg COMMAND_DOCS_Args[] = {
4249{"command-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
4250{0}
4251};
4252
4253/********** COMMAND GETKEYS ********************/
4254
4255/* COMMAND GETKEYS history */
4256#define COMMAND_GETKEYS_History NULL
4257
4258/* COMMAND GETKEYS tips */
4259#define COMMAND_GETKEYS_tips NULL
4260
4261/********** COMMAND GETKEYSANDFLAGS ********************/
4262
4263/* COMMAND GETKEYSANDFLAGS history */
4264#define COMMAND_GETKEYSANDFLAGS_History NULL
4265
4266/* COMMAND GETKEYSANDFLAGS tips */
4267#define COMMAND_GETKEYSANDFLAGS_tips NULL
4268
4269/********** COMMAND HELP ********************/
4270
4271/* COMMAND HELP history */
4272#define COMMAND_HELP_History NULL
4273
4274/* COMMAND HELP tips */
4275#define COMMAND_HELP_tips NULL
4276
4277/********** COMMAND INFO ********************/
4278
4279/* COMMAND INFO history */
4280commandHistory COMMAND_INFO_History[] = {
4281{"7.0.0","Allowed to be called with no argument to get info on all commands."},
4282{0}
4283};
4284
4285/* COMMAND INFO tips */
4286const char *COMMAND_INFO_tips[] = {
4287"nondeterministic_output_order",
4288NULL
4289};
4290
4291/* COMMAND INFO argument table */
4292struct redisCommandArg COMMAND_INFO_Args[] = {
4293{"command-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
4294{0}
4295};
4296
4297/********** COMMAND LIST ********************/
4298
4299/* COMMAND LIST history */
4300#define COMMAND_LIST_History NULL
4301
4302/* COMMAND LIST tips */
4303const char *COMMAND_LIST_tips[] = {
4304"nondeterministic_output_order",
4305NULL
4306};
4307
4308/* COMMAND LIST filterby argument table */
4309struct redisCommandArg COMMAND_LIST_filterby_Subargs[] = {
4310{"module-name",ARG_TYPE_STRING,-1,"MODULE",NULL,NULL,CMD_ARG_NONE},
4311{"category",ARG_TYPE_STRING,-1,"ACLCAT",NULL,NULL,CMD_ARG_NONE},
4312{"pattern",ARG_TYPE_PATTERN,-1,"PATTERN",NULL,NULL,CMD_ARG_NONE},
4313{0}
4314};
4315
4316/* COMMAND LIST argument table */
4317struct redisCommandArg COMMAND_LIST_Args[] = {
4318{"filterby",ARG_TYPE_ONEOF,-1,"FILTERBY",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=COMMAND_LIST_filterby_Subargs},
4319{0}
4320};
4321
4322/* COMMAND command table */
4323struct redisCommand COMMAND_Subcommands[] = {
4324{"count","Get total number of Redis commands","O(1)","2.8.13",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,COMMAND_COUNT_History,COMMAND_COUNT_tips,commandCountCommand,2,CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION},
4325{"docs","Get array of specific Redis command documentation","O(N) where N is the number of commands to look up","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,COMMAND_DOCS_History,COMMAND_DOCS_tips,commandDocsCommand,-2,CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=COMMAND_DOCS_Args},
4326{"getkeys","Extract keys given a full Redis command","O(N) where N is the number of arguments to the command","2.8.13",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,COMMAND_GETKEYS_History,COMMAND_GETKEYS_tips,commandGetKeysCommand,-4,CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION},
4327{"getkeysandflags","Extract keys and access flags given a full Redis command","O(N) where N is the number of arguments to the command","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,COMMAND_GETKEYSANDFLAGS_History,COMMAND_GETKEYSANDFLAGS_tips,commandGetKeysAndFlagsCommand,-4,CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION},
4328{"help","Show helpful text about the different subcommands","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,COMMAND_HELP_History,COMMAND_HELP_tips,commandHelpCommand,2,CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION},
4329{"info","Get array of specific Redis command details, or all when no argument is given.","O(N) where N is the number of commands to look up","2.8.13",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,COMMAND_INFO_History,COMMAND_INFO_tips,commandInfoCommand,-2,CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=COMMAND_INFO_Args},
4330{"list","Get an array of Redis command names","O(N) where N is the total number of Redis commands","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,COMMAND_LIST_History,COMMAND_LIST_tips,commandListCommand,-2,CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=COMMAND_LIST_Args},
4331{0}
4332};
4333
4334/********** COMMAND ********************/
4335
4336/* COMMAND history */
4337#define COMMAND_History NULL
4338
4339/* COMMAND tips */
4340const char *COMMAND_tips[] = {
4341"nondeterministic_output_order",
4342NULL
4343};
4344
4345/********** CONFIG GET ********************/
4346
4347/* CONFIG GET history */
4348commandHistory CONFIG_GET_History[] = {
4349{"7.0.0","Added the ability to pass multiple pattern parameters in one call"},
4350{0}
4351};
4352
4353/* CONFIG GET tips */
4354#define CONFIG_GET_tips NULL
4355
4356/* CONFIG GET parameter argument table */
4357struct redisCommandArg CONFIG_GET_parameter_Subargs[] = {
4358{"parameter",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4359{0}
4360};
4361
4362/* CONFIG GET argument table */
4363struct redisCommandArg CONFIG_GET_Args[] = {
4364{"parameter",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=CONFIG_GET_parameter_Subargs},
4365{0}
4366};
4367
4368/********** CONFIG HELP ********************/
4369
4370/* CONFIG HELP history */
4371#define CONFIG_HELP_History NULL
4372
4373/* CONFIG HELP tips */
4374#define CONFIG_HELP_tips NULL
4375
4376/********** CONFIG RESETSTAT ********************/
4377
4378/* CONFIG RESETSTAT history */
4379#define CONFIG_RESETSTAT_History NULL
4380
4381/* CONFIG RESETSTAT tips */
4382#define CONFIG_RESETSTAT_tips NULL
4383
4384/********** CONFIG REWRITE ********************/
4385
4386/* CONFIG REWRITE history */
4387#define CONFIG_REWRITE_History NULL
4388
4389/* CONFIG REWRITE tips */
4390#define CONFIG_REWRITE_tips NULL
4391
4392/********** CONFIG SET ********************/
4393
4394/* CONFIG SET history */
4395commandHistory CONFIG_SET_History[] = {
4396{"7.0.0","Added the ability to set multiple parameters in one call."},
4397{0}
4398};
4399
4400/* CONFIG SET tips */
4401const char *CONFIG_SET_tips[] = {
4402"request_policy:all_nodes",
4403"response_policy:all_succeeded",
4404NULL
4405};
4406
4407/* CONFIG SET parameter_value argument table */
4408struct redisCommandArg CONFIG_SET_parameter_value_Subargs[] = {
4409{"parameter",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4410{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4411{0}
4412};
4413
4414/* CONFIG SET argument table */
4415struct redisCommandArg CONFIG_SET_Args[] = {
4416{"parameter_value",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=CONFIG_SET_parameter_value_Subargs},
4417{0}
4418};
4419
4420/* CONFIG command table */
4421struct redisCommand CONFIG_Subcommands[] = {
4422{"get","Get the values of configuration parameters","O(N) when N is the number of configuration parameters provided","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,CONFIG_GET_History,CONFIG_GET_tips,configGetCommand,-3,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0,.args=CONFIG_GET_Args},
4423{"help","Show helpful text about the different subcommands","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,CONFIG_HELP_History,CONFIG_HELP_tips,configHelpCommand,2,CMD_LOADING|CMD_STALE,0},
4424{"resetstat","Reset the stats returned by INFO","O(1)","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,CONFIG_RESETSTAT_History,CONFIG_RESETSTAT_tips,configResetStatCommand,2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0},
4425{"rewrite","Rewrite the configuration file with the in memory configuration","O(1)","2.8.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,CONFIG_REWRITE_History,CONFIG_REWRITE_tips,configRewriteCommand,2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0},
4426{"set","Set configuration parameters to the given values","O(N) when N is the number of configuration parameters provided","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,CONFIG_SET_History,CONFIG_SET_tips,configSetCommand,-4,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0,.args=CONFIG_SET_Args},
4427{0}
4428};
4429
4430/********** CONFIG ********************/
4431
4432/* CONFIG history */
4433#define CONFIG_History NULL
4434
4435/* CONFIG tips */
4436#define CONFIG_tips NULL
4437
4438/********** DBSIZE ********************/
4439
4440/* DBSIZE history */
4441#define DBSIZE_History NULL
4442
4443/* DBSIZE tips */
4444const char *DBSIZE_tips[] = {
4445"request_policy:all_shards",
4446"response_policy:agg_sum",
4447NULL
4448};
4449
4450/********** DEBUG ********************/
4451
4452/* DEBUG history */
4453#define DEBUG_History NULL
4454
4455/* DEBUG tips */
4456#define DEBUG_tips NULL
4457
4458/********** FAILOVER ********************/
4459
4460/* FAILOVER history */
4461#define FAILOVER_History NULL
4462
4463/* FAILOVER tips */
4464#define FAILOVER_tips NULL
4465
4466/* FAILOVER target argument table */
4467struct redisCommandArg FAILOVER_target_Subargs[] = {
4468{"host",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4469{"port",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4470{"force",ARG_TYPE_PURE_TOKEN,-1,"FORCE",NULL,NULL,CMD_ARG_OPTIONAL},
4471{0}
4472};
4473
4474/* FAILOVER argument table */
4475struct redisCommandArg FAILOVER_Args[] = {
4476{"target",ARG_TYPE_BLOCK,-1,"TO",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=FAILOVER_target_Subargs},
4477{"abort",ARG_TYPE_PURE_TOKEN,-1,"ABORT",NULL,NULL,CMD_ARG_OPTIONAL},
4478{"milliseconds",ARG_TYPE_INTEGER,-1,"TIMEOUT",NULL,NULL,CMD_ARG_OPTIONAL},
4479{0}
4480};
4481
4482/********** FLUSHALL ********************/
4483
4484/* FLUSHALL history */
4485commandHistory FLUSHALL_History[] = {
4486{"4.0.0","Added the `ASYNC` flushing mode modifier."},
4487{"6.2.0","Added the `SYNC` flushing mode modifier."},
4488{0}
4489};
4490
4491/* FLUSHALL tips */
4492const char *FLUSHALL_tips[] = {
4493"request_policy:all_shards",
4494"response_policy:all_succeeded",
4495NULL
4496};
4497
4498/* FLUSHALL async argument table */
4499struct redisCommandArg FLUSHALL_async_Subargs[] = {
4500{"async",ARG_TYPE_PURE_TOKEN,-1,"ASYNC",NULL,"4.0.0",CMD_ARG_NONE},
4501{"sync",ARG_TYPE_PURE_TOKEN,-1,"SYNC",NULL,"6.2.0",CMD_ARG_NONE},
4502{0}
4503};
4504
4505/* FLUSHALL argument table */
4506struct redisCommandArg FLUSHALL_Args[] = {
4507{"async",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=FLUSHALL_async_Subargs},
4508{0}
4509};
4510
4511/********** FLUSHDB ********************/
4512
4513/* FLUSHDB history */
4514commandHistory FLUSHDB_History[] = {
4515{"4.0.0","Added the `ASYNC` flushing mode modifier."},
4516{"6.2.0","Added the `SYNC` flushing mode modifier."},
4517{0}
4518};
4519
4520/* FLUSHDB tips */
4521const char *FLUSHDB_tips[] = {
4522"request_policy:all_shards",
4523"response_policy:all_succeeded",
4524NULL
4525};
4526
4527/* FLUSHDB async argument table */
4528struct redisCommandArg FLUSHDB_async_Subargs[] = {
4529{"async",ARG_TYPE_PURE_TOKEN,-1,"ASYNC",NULL,"4.0.0",CMD_ARG_NONE},
4530{"sync",ARG_TYPE_PURE_TOKEN,-1,"SYNC",NULL,"6.2.0",CMD_ARG_NONE},
4531{0}
4532};
4533
4534/* FLUSHDB argument table */
4535struct redisCommandArg FLUSHDB_Args[] = {
4536{"async",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=FLUSHDB_async_Subargs},
4537{0}
4538};
4539
4540/********** INFO ********************/
4541
4542/* INFO history */
4543commandHistory INFO_History[] = {
4544{"7.0.0","Added support for taking multiple section arguments."},
4545{0}
4546};
4547
4548/* INFO tips */
4549const char *INFO_tips[] = {
4550"nondeterministic_output",
4551"request_policy:all_shards",
4552"response_policy:special",
4553NULL
4554};
4555
4556/* INFO argument table */
4557struct redisCommandArg INFO_Args[] = {
4558{"section",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
4559{0}
4560};
4561
4562/********** LASTSAVE ********************/
4563
4564/* LASTSAVE history */
4565#define LASTSAVE_History NULL
4566
4567/* LASTSAVE tips */
4568const char *LASTSAVE_tips[] = {
4569"nondeterministic_output",
4570NULL
4571};
4572
4573/********** LATENCY DOCTOR ********************/
4574
4575/* LATENCY DOCTOR history */
4576#define LATENCY_DOCTOR_History NULL
4577
4578/* LATENCY DOCTOR tips */
4579const char *LATENCY_DOCTOR_tips[] = {
4580"nondeterministic_output",
4581"request_policy:all_nodes",
4582"response_policy:special",
4583NULL
4584};
4585
4586/********** LATENCY GRAPH ********************/
4587
4588/* LATENCY GRAPH history */
4589#define LATENCY_GRAPH_History NULL
4590
4591/* LATENCY GRAPH tips */
4592const char *LATENCY_GRAPH_tips[] = {
4593"nondeterministic_output",
4594"request_policy:all_nodes",
4595"response_policy:special",
4596NULL
4597};
4598
4599/* LATENCY GRAPH argument table */
4600struct redisCommandArg LATENCY_GRAPH_Args[] = {
4601{"event",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4602{0}
4603};
4604
4605/********** LATENCY HELP ********************/
4606
4607/* LATENCY HELP history */
4608#define LATENCY_HELP_History NULL
4609
4610/* LATENCY HELP tips */
4611#define LATENCY_HELP_tips NULL
4612
4613/********** LATENCY HISTOGRAM ********************/
4614
4615/* LATENCY HISTOGRAM history */
4616#define LATENCY_HISTOGRAM_History NULL
4617
4618/* LATENCY HISTOGRAM tips */
4619const char *LATENCY_HISTOGRAM_tips[] = {
4620"nondeterministic_output",
4621"request_policy:all_nodes",
4622"response_policy:special",
4623NULL
4624};
4625
4626/* LATENCY HISTOGRAM argument table */
4627struct redisCommandArg LATENCY_HISTOGRAM_Args[] = {
4628{"command",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
4629{0}
4630};
4631
4632/********** LATENCY HISTORY ********************/
4633
4634/* LATENCY HISTORY history */
4635#define LATENCY_HISTORY_History NULL
4636
4637/* LATENCY HISTORY tips */
4638const char *LATENCY_HISTORY_tips[] = {
4639"nondeterministic_output",
4640"request_policy:all_nodes",
4641"response_policy:special",
4642NULL
4643};
4644
4645/* LATENCY HISTORY argument table */
4646struct redisCommandArg LATENCY_HISTORY_Args[] = {
4647{"event",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4648{0}
4649};
4650
4651/********** LATENCY LATEST ********************/
4652
4653/* LATENCY LATEST history */
4654#define LATENCY_LATEST_History NULL
4655
4656/* LATENCY LATEST tips */
4657const char *LATENCY_LATEST_tips[] = {
4658"nondeterministic_output",
4659"request_policy:all_nodes",
4660"response_policy:special",
4661NULL
4662};
4663
4664/********** LATENCY RESET ********************/
4665
4666/* LATENCY RESET history */
4667#define LATENCY_RESET_History NULL
4668
4669/* LATENCY RESET tips */
4670const char *LATENCY_RESET_tips[] = {
4671"request_policy:all_nodes",
4672"response_policy:all_succeeded",
4673NULL
4674};
4675
4676/* LATENCY RESET argument table */
4677struct redisCommandArg LATENCY_RESET_Args[] = {
4678{"event",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
4679{0}
4680};
4681
4682/* LATENCY command table */
4683struct redisCommand LATENCY_Subcommands[] = {
4684{"doctor","Return a human readable latency analysis report.","O(1)","2.8.13",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,LATENCY_DOCTOR_History,LATENCY_DOCTOR_tips,latencyCommand,2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0},
4685{"graph","Return a latency graph for the event.","O(1)","2.8.13",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,LATENCY_GRAPH_History,LATENCY_GRAPH_tips,latencyCommand,3,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0,.args=LATENCY_GRAPH_Args},
4686{"help","Show helpful text about the different subcommands.","O(1)","2.8.13",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,LATENCY_HELP_History,LATENCY_HELP_tips,latencyCommand,2,CMD_LOADING|CMD_STALE,0},
4687{"histogram","Return the cumulative distribution of latencies of a subset of commands or all.","O(N) where N is the number of commands with latency information being retrieved.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,LATENCY_HISTOGRAM_History,LATENCY_HISTOGRAM_tips,latencyCommand,-2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0,.args=LATENCY_HISTOGRAM_Args},
4688{"history","Return timestamp-latency samples for the event.","O(1)","2.8.13",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,LATENCY_HISTORY_History,LATENCY_HISTORY_tips,latencyCommand,3,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0,.args=LATENCY_HISTORY_Args},
4689{"latest","Return the latest latency samples for all events.","O(1)","2.8.13",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,LATENCY_LATEST_History,LATENCY_LATEST_tips,latencyCommand,2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0},
4690{"reset","Reset latency data for one or more events.","O(1)","2.8.13",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,LATENCY_RESET_History,LATENCY_RESET_tips,latencyCommand,-2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0,.args=LATENCY_RESET_Args},
4691{0}
4692};
4693
4694/********** LATENCY ********************/
4695
4696/* LATENCY history */
4697#define LATENCY_History NULL
4698
4699/* LATENCY tips */
4700#define LATENCY_tips NULL
4701
4702/********** LOLWUT ********************/
4703
4704/* LOLWUT history */
4705#define LOLWUT_History NULL
4706
4707/* LOLWUT tips */
4708#define LOLWUT_tips NULL
4709
4710/* LOLWUT argument table */
4711struct redisCommandArg LOLWUT_Args[] = {
4712{"version",ARG_TYPE_INTEGER,-1,"VERSION",NULL,NULL,CMD_ARG_OPTIONAL},
4713{0}
4714};
4715
4716/********** MEMORY DOCTOR ********************/
4717
4718/* MEMORY DOCTOR history */
4719#define MEMORY_DOCTOR_History NULL
4720
4721/* MEMORY DOCTOR tips */
4722const char *MEMORY_DOCTOR_tips[] = {
4723"nondeterministic_output",
4724"request_policy:all_shards",
4725"response_policy:special",
4726NULL
4727};
4728
4729/********** MEMORY HELP ********************/
4730
4731/* MEMORY HELP history */
4732#define MEMORY_HELP_History NULL
4733
4734/* MEMORY HELP tips */
4735#define MEMORY_HELP_tips NULL
4736
4737/********** MEMORY MALLOC_STATS ********************/
4738
4739/* MEMORY MALLOC_STATS history */
4740#define MEMORY_MALLOC_STATS_History NULL
4741
4742/* MEMORY MALLOC_STATS tips */
4743const char *MEMORY_MALLOC_STATS_tips[] = {
4744"nondeterministic_output",
4745"request_policy:all_shards",
4746"response_policy:special",
4747NULL
4748};
4749
4750/********** MEMORY PURGE ********************/
4751
4752/* MEMORY PURGE history */
4753#define MEMORY_PURGE_History NULL
4754
4755/* MEMORY PURGE tips */
4756const char *MEMORY_PURGE_tips[] = {
4757"request_policy:all_shards",
4758"response_policy:all_succeeded",
4759NULL
4760};
4761
4762/********** MEMORY STATS ********************/
4763
4764/* MEMORY STATS history */
4765#define MEMORY_STATS_History NULL
4766
4767/* MEMORY STATS tips */
4768const char *MEMORY_STATS_tips[] = {
4769"nondeterministic_output",
4770"request_policy:all_shards",
4771"response_policy:special",
4772NULL
4773};
4774
4775/********** MEMORY USAGE ********************/
4776
4777/* MEMORY USAGE history */
4778#define MEMORY_USAGE_History NULL
4779
4780/* MEMORY USAGE tips */
4781#define MEMORY_USAGE_tips NULL
4782
4783/* MEMORY USAGE argument table */
4784struct redisCommandArg MEMORY_USAGE_Args[] = {
4785{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
4786{"count",ARG_TYPE_INTEGER,-1,"SAMPLES",NULL,NULL,CMD_ARG_OPTIONAL},
4787{0}
4788};
4789
4790/* MEMORY command table */
4791struct redisCommand MEMORY_Subcommands[] = {
4792{"doctor","Outputs memory problems report","O(1)","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MEMORY_DOCTOR_History,MEMORY_DOCTOR_tips,memoryCommand,2,0,0},
4793{"help","Show helpful text about the different subcommands","O(1)","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MEMORY_HELP_History,MEMORY_HELP_tips,memoryCommand,2,CMD_LOADING|CMD_STALE,0},
4794{"malloc-stats","Show allocator internal stats","Depends on how much memory is allocated, could be slow","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MEMORY_MALLOC_STATS_History,MEMORY_MALLOC_STATS_tips,memoryCommand,2,0,0},
4795{"purge","Ask the allocator to release memory","Depends on how much memory is allocated, could be slow","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MEMORY_PURGE_History,MEMORY_PURGE_tips,memoryCommand,2,0,0},
4796{"stats","Show memory usage details","O(1)","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MEMORY_STATS_History,MEMORY_STATS_tips,memoryCommand,2,0,0},
4797{"usage","Estimate the memory usage of a key","O(N) where N is the number of samples.","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MEMORY_USAGE_History,MEMORY_USAGE_tips,memoryCommand,-3,CMD_READONLY,0,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=MEMORY_USAGE_Args},
4798{0}
4799};
4800
4801/********** MEMORY ********************/
4802
4803/* MEMORY history */
4804#define MEMORY_History NULL
4805
4806/* MEMORY tips */
4807#define MEMORY_tips NULL
4808
4809/********** MODULE HELP ********************/
4810
4811/* MODULE HELP history */
4812#define MODULE_HELP_History NULL
4813
4814/* MODULE HELP tips */
4815#define MODULE_HELP_tips NULL
4816
4817/********** MODULE LIST ********************/
4818
4819/* MODULE LIST history */
4820#define MODULE_LIST_History NULL
4821
4822/* MODULE LIST tips */
4823const char *MODULE_LIST_tips[] = {
4824"nondeterministic_output_order",
4825NULL
4826};
4827
4828/********** MODULE LOAD ********************/
4829
4830/* MODULE LOAD history */
4831#define MODULE_LOAD_History NULL
4832
4833/* MODULE LOAD tips */
4834#define MODULE_LOAD_tips NULL
4835
4836/* MODULE LOAD argument table */
4837struct redisCommandArg MODULE_LOAD_Args[] = {
4838{"path",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4839{"arg",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
4840{0}
4841};
4842
4843/********** MODULE LOADEX ********************/
4844
4845/* MODULE LOADEX history */
4846#define MODULE_LOADEX_History NULL
4847
4848/* MODULE LOADEX tips */
4849#define MODULE_LOADEX_tips NULL
4850
4851/* MODULE LOADEX configs argument table */
4852struct redisCommandArg MODULE_LOADEX_configs_Subargs[] = {
4853{"name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4854{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4855{0}
4856};
4857
4858/* MODULE LOADEX args argument table */
4859struct redisCommandArg MODULE_LOADEX_args_Subargs[] = {
4860{"arg",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4861{0}
4862};
4863
4864/* MODULE LOADEX argument table */
4865struct redisCommandArg MODULE_LOADEX_Args[] = {
4866{"path",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4867{"configs",ARG_TYPE_BLOCK,-1,"CONFIG",NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE|CMD_ARG_MULTIPLE_TOKEN,.subargs=MODULE_LOADEX_configs_Subargs},
4868{"args",ARG_TYPE_BLOCK,-1,"ARGS",NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE,.subargs=MODULE_LOADEX_args_Subargs},
4869{0}
4870};
4871
4872/********** MODULE UNLOAD ********************/
4873
4874/* MODULE UNLOAD history */
4875#define MODULE_UNLOAD_History NULL
4876
4877/* MODULE UNLOAD tips */
4878#define MODULE_UNLOAD_tips NULL
4879
4880/* MODULE UNLOAD argument table */
4881struct redisCommandArg MODULE_UNLOAD_Args[] = {
4882{"name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4883{0}
4884};
4885
4886/* MODULE command table */
4887struct redisCommand MODULE_Subcommands[] = {
4888{"help","Show helpful text about the different subcommands","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MODULE_HELP_History,MODULE_HELP_tips,moduleCommand,2,CMD_LOADING|CMD_STALE,0},
4889{"list","List all modules loaded by the server","O(N) where N is the number of loaded modules.","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MODULE_LIST_History,MODULE_LIST_tips,moduleCommand,2,CMD_ADMIN|CMD_NOSCRIPT,0},
4890{"load","Load a module","O(1)","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MODULE_LOAD_History,MODULE_LOAD_tips,moduleCommand,-3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT|CMD_PROTECTED,0,.args=MODULE_LOAD_Args},
4891{"loadex","Load a module with extended parameters","O(1)","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MODULE_LOADEX_History,MODULE_LOADEX_tips,moduleCommand,-3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT|CMD_PROTECTED,0,.args=MODULE_LOADEX_Args},
4892{"unload","Unload a module","O(1)","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MODULE_UNLOAD_History,MODULE_UNLOAD_tips,moduleCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT|CMD_PROTECTED,0,.args=MODULE_UNLOAD_Args},
4893{0}
4894};
4895
4896/********** MODULE ********************/
4897
4898/* MODULE history */
4899#define MODULE_History NULL
4900
4901/* MODULE tips */
4902#define MODULE_tips NULL
4903
4904/********** MONITOR ********************/
4905
4906/* MONITOR history */
4907#define MONITOR_History NULL
4908
4909/* MONITOR tips */
4910#define MONITOR_tips NULL
4911
4912/********** PSYNC ********************/
4913
4914/* PSYNC history */
4915#define PSYNC_History NULL
4916
4917/* PSYNC tips */
4918#define PSYNC_tips NULL
4919
4920/* PSYNC argument table */
4921struct redisCommandArg PSYNC_Args[] = {
4922{"replicationid",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4923{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4924{0}
4925};
4926
4927/********** REPLCONF ********************/
4928
4929/* REPLCONF history */
4930#define REPLCONF_History NULL
4931
4932/* REPLCONF tips */
4933#define REPLCONF_tips NULL
4934
4935/********** REPLICAOF ********************/
4936
4937/* REPLICAOF history */
4938#define REPLICAOF_History NULL
4939
4940/* REPLICAOF tips */
4941#define REPLICAOF_tips NULL
4942
4943/* REPLICAOF argument table */
4944struct redisCommandArg REPLICAOF_Args[] = {
4945{"host",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4946{"port",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4947{0}
4948};
4949
4950/********** RESTORE_ASKING ********************/
4951
4952/* RESTORE_ASKING history */
4953commandHistory RESTORE_ASKING_History[] = {
4954{"3.0.0","Added the `REPLACE` modifier."},
4955{"5.0.0","Added the `ABSTTL` modifier."},
4956{"5.0.0","Added the `IDLETIME` and `FREQ` options."},
4957{0}
4958};
4959
4960/* RESTORE_ASKING tips */
4961#define RESTORE_ASKING_tips NULL
4962
4963/* RESTORE_ASKING argument table */
4964struct redisCommandArg RESTORE_ASKING_Args[] = {
4965{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
4966{"ttl",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4967{"serialized-value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
4968{"replace",ARG_TYPE_PURE_TOKEN,-1,"REPLACE",NULL,"3.0.0",CMD_ARG_OPTIONAL},
4969{"absttl",ARG_TYPE_PURE_TOKEN,-1,"ABSTTL",NULL,"5.0.0",CMD_ARG_OPTIONAL},
4970{"seconds",ARG_TYPE_INTEGER,-1,"IDLETIME",NULL,"5.0.0",CMD_ARG_OPTIONAL},
4971{"frequency",ARG_TYPE_INTEGER,-1,"FREQ",NULL,"5.0.0",CMD_ARG_OPTIONAL},
4972{0}
4973};
4974
4975/********** ROLE ********************/
4976
4977/* ROLE history */
4978#define ROLE_History NULL
4979
4980/* ROLE tips */
4981#define ROLE_tips NULL
4982
4983/********** SAVE ********************/
4984
4985/* SAVE history */
4986#define SAVE_History NULL
4987
4988/* SAVE tips */
4989#define SAVE_tips NULL
4990
4991/********** SHUTDOWN ********************/
4992
4993/* SHUTDOWN history */
4994commandHistory SHUTDOWN_History[] = {
4995{"7.0.0","Added the `NOW`, `FORCE` and `ABORT` modifiers."},
4996{0}
4997};
4998
4999/* SHUTDOWN tips */
5000#define SHUTDOWN_tips NULL
5001
5002/* SHUTDOWN nosave_save argument table */
5003struct redisCommandArg SHUTDOWN_nosave_save_Subargs[] = {
5004{"nosave",ARG_TYPE_PURE_TOKEN,-1,"NOSAVE",NULL,NULL,CMD_ARG_NONE},
5005{"save",ARG_TYPE_PURE_TOKEN,-1,"SAVE",NULL,NULL,CMD_ARG_NONE},
5006{0}
5007};
5008
5009/* SHUTDOWN argument table */
5010struct redisCommandArg SHUTDOWN_Args[] = {
5011{"nosave_save",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=SHUTDOWN_nosave_save_Subargs},
5012{"now",ARG_TYPE_PURE_TOKEN,-1,"NOW",NULL,"7.0.0",CMD_ARG_OPTIONAL},
5013{"force",ARG_TYPE_PURE_TOKEN,-1,"FORCE",NULL,"7.0.0",CMD_ARG_OPTIONAL},
5014{"abort",ARG_TYPE_PURE_TOKEN,-1,"ABORT",NULL,"7.0.0",CMD_ARG_OPTIONAL},
5015{0}
5016};
5017
5018/********** SLAVEOF ********************/
5019
5020/* SLAVEOF history */
5021#define SLAVEOF_History NULL
5022
5023/* SLAVEOF tips */
5024#define SLAVEOF_tips NULL
5025
5026/* SLAVEOF argument table */
5027struct redisCommandArg SLAVEOF_Args[] = {
5028{"host",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5029{"port",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5030{0}
5031};
5032
5033/********** SLOWLOG GET ********************/
5034
5035/* SLOWLOG GET history */
5036commandHistory SLOWLOG_GET_History[] = {
5037{"4.0.0","Added client IP address, port and name to the reply."},
5038{0}
5039};
5040
5041/* SLOWLOG GET tips */
5042const char *SLOWLOG_GET_tips[] = {
5043"request_policy:all_nodes",
5044"nondeterministic_output",
5045NULL
5046};
5047
5048/* SLOWLOG GET argument table */
5049struct redisCommandArg SLOWLOG_GET_Args[] = {
5050{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL},
5051{0}
5052};
5053
5054/********** SLOWLOG HELP ********************/
5055
5056/* SLOWLOG HELP history */
5057#define SLOWLOG_HELP_History NULL
5058
5059/* SLOWLOG HELP tips */
5060#define SLOWLOG_HELP_tips NULL
5061
5062/********** SLOWLOG LEN ********************/
5063
5064/* SLOWLOG LEN history */
5065#define SLOWLOG_LEN_History NULL
5066
5067/* SLOWLOG LEN tips */
5068const char *SLOWLOG_LEN_tips[] = {
5069"request_policy:all_nodes",
5070"response_policy:agg_sum",
5071"nondeterministic_output",
5072NULL
5073};
5074
5075/********** SLOWLOG RESET ********************/
5076
5077/* SLOWLOG RESET history */
5078#define SLOWLOG_RESET_History NULL
5079
5080/* SLOWLOG RESET tips */
5081const char *SLOWLOG_RESET_tips[] = {
5082"request_policy:all_nodes",
5083"response_policy:all_succeeded",
5084NULL
5085};
5086
5087/* SLOWLOG command table */
5088struct redisCommand SLOWLOG_Subcommands[] = {
5089{"get","Get the slow log's entries","O(N) where N is the number of entries returned","2.2.12",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,SLOWLOG_GET_History,SLOWLOG_GET_tips,slowlogCommand,-2,CMD_ADMIN|CMD_LOADING|CMD_STALE,0,.args=SLOWLOG_GET_Args},
5090{"help","Show helpful text about the different subcommands","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,SLOWLOG_HELP_History,SLOWLOG_HELP_tips,slowlogCommand,2,CMD_LOADING|CMD_STALE,0},
5091{"len","Get the slow log's length","O(1)","2.2.12",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,SLOWLOG_LEN_History,SLOWLOG_LEN_tips,slowlogCommand,2,CMD_ADMIN|CMD_LOADING|CMD_STALE,0},
5092{"reset","Clear all entries from the slow log","O(N) where N is the number of entries in the slowlog","2.2.12",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,SLOWLOG_RESET_History,SLOWLOG_RESET_tips,slowlogCommand,2,CMD_ADMIN|CMD_LOADING|CMD_STALE,0},
5093{0}
5094};
5095
5096/********** SLOWLOG ********************/
5097
5098/* SLOWLOG history */
5099#define SLOWLOG_History NULL
5100
5101/* SLOWLOG tips */
5102#define SLOWLOG_tips NULL
5103
5104/********** SWAPDB ********************/
5105
5106/* SWAPDB history */
5107#define SWAPDB_History NULL
5108
5109/* SWAPDB tips */
5110#define SWAPDB_tips NULL
5111
5112/* SWAPDB argument table */
5113struct redisCommandArg SWAPDB_Args[] = {
5114{"index1",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5115{"index2",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5116{0}
5117};
5118
5119/********** SYNC ********************/
5120
5121/* SYNC history */
5122#define SYNC_History NULL
5123
5124/* SYNC tips */
5125#define SYNC_tips NULL
5126
5127/********** TIME ********************/
5128
5129/* TIME history */
5130#define TIME_History NULL
5131
5132/* TIME tips */
5133const char *TIME_tips[] = {
5134"nondeterministic_output",
5135NULL
5136};
5137
5138/********** SADD ********************/
5139
5140/* SADD history */
5141commandHistory SADD_History[] = {
5142{"2.4.0","Accepts multiple `member` arguments."},
5143{0}
5144};
5145
5146/* SADD tips */
5147#define SADD_tips NULL
5148
5149/* SADD argument table */
5150struct redisCommandArg SADD_Args[] = {
5151{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5152{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5153{0}
5154};
5155
5156/********** SCARD ********************/
5157
5158/* SCARD history */
5159#define SCARD_History NULL
5160
5161/* SCARD tips */
5162#define SCARD_tips NULL
5163
5164/* SCARD argument table */
5165struct redisCommandArg SCARD_Args[] = {
5166{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5167{0}
5168};
5169
5170/********** SDIFF ********************/
5171
5172/* SDIFF history */
5173#define SDIFF_History NULL
5174
5175/* SDIFF tips */
5176const char *SDIFF_tips[] = {
5177"nondeterministic_output_order",
5178NULL
5179};
5180
5181/* SDIFF argument table */
5182struct redisCommandArg SDIFF_Args[] = {
5183{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5184{0}
5185};
5186
5187/********** SDIFFSTORE ********************/
5188
5189/* SDIFFSTORE history */
5190#define SDIFFSTORE_History NULL
5191
5192/* SDIFFSTORE tips */
5193#define SDIFFSTORE_tips NULL
5194
5195/* SDIFFSTORE argument table */
5196struct redisCommandArg SDIFFSTORE_Args[] = {
5197{"destination",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5198{"key",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5199{0}
5200};
5201
5202/********** SINTER ********************/
5203
5204/* SINTER history */
5205#define SINTER_History NULL
5206
5207/* SINTER tips */
5208const char *SINTER_tips[] = {
5209"nondeterministic_output_order",
5210NULL
5211};
5212
5213/* SINTER argument table */
5214struct redisCommandArg SINTER_Args[] = {
5215{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5216{0}
5217};
5218
5219/********** SINTERCARD ********************/
5220
5221/* SINTERCARD history */
5222#define SINTERCARD_History NULL
5223
5224/* SINTERCARD tips */
5225#define SINTERCARD_tips NULL
5226
5227/* SINTERCARD argument table */
5228struct redisCommandArg SINTERCARD_Args[] = {
5229{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5230{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5231{"limit",ARG_TYPE_INTEGER,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL},
5232{0}
5233};
5234
5235/********** SINTERSTORE ********************/
5236
5237/* SINTERSTORE history */
5238#define SINTERSTORE_History NULL
5239
5240/* SINTERSTORE tips */
5241#define SINTERSTORE_tips NULL
5242
5243/* SINTERSTORE argument table */
5244struct redisCommandArg SINTERSTORE_Args[] = {
5245{"destination",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5246{"key",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5247{0}
5248};
5249
5250/********** SISMEMBER ********************/
5251
5252/* SISMEMBER history */
5253#define SISMEMBER_History NULL
5254
5255/* SISMEMBER tips */
5256#define SISMEMBER_tips NULL
5257
5258/* SISMEMBER argument table */
5259struct redisCommandArg SISMEMBER_Args[] = {
5260{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5261{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5262{0}
5263};
5264
5265/********** SMEMBERS ********************/
5266
5267/* SMEMBERS history */
5268#define SMEMBERS_History NULL
5269
5270/* SMEMBERS tips */
5271const char *SMEMBERS_tips[] = {
5272"nondeterministic_output_order",
5273NULL
5274};
5275
5276/* SMEMBERS argument table */
5277struct redisCommandArg SMEMBERS_Args[] = {
5278{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5279{0}
5280};
5281
5282/********** SMISMEMBER ********************/
5283
5284/* SMISMEMBER history */
5285#define SMISMEMBER_History NULL
5286
5287/* SMISMEMBER tips */
5288#define SMISMEMBER_tips NULL
5289
5290/* SMISMEMBER argument table */
5291struct redisCommandArg SMISMEMBER_Args[] = {
5292{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5293{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5294{0}
5295};
5296
5297/********** SMOVE ********************/
5298
5299/* SMOVE history */
5300#define SMOVE_History NULL
5301
5302/* SMOVE tips */
5303#define SMOVE_tips NULL
5304
5305/* SMOVE argument table */
5306struct redisCommandArg SMOVE_Args[] = {
5307{"source",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5308{"destination",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_NONE},
5309{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5310{0}
5311};
5312
5313/********** SPOP ********************/
5314
5315/* SPOP history */
5316commandHistory SPOP_History[] = {
5317{"3.2.0","Added the `count` argument."},
5318{0}
5319};
5320
5321/* SPOP tips */
5322const char *SPOP_tips[] = {
5323"nondeterministic_output",
5324NULL
5325};
5326
5327/* SPOP argument table */
5328struct redisCommandArg SPOP_Args[] = {
5329{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5330{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,"3.2.0",CMD_ARG_OPTIONAL},
5331{0}
5332};
5333
5334/********** SRANDMEMBER ********************/
5335
5336/* SRANDMEMBER history */
5337commandHistory SRANDMEMBER_History[] = {
5338{"2.6.0","Added the optional `count` argument."},
5339{0}
5340};
5341
5342/* SRANDMEMBER tips */
5343const char *SRANDMEMBER_tips[] = {
5344"nondeterministic_output",
5345NULL
5346};
5347
5348/* SRANDMEMBER argument table */
5349struct redisCommandArg SRANDMEMBER_Args[] = {
5350{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5351{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,"2.6.0",CMD_ARG_OPTIONAL},
5352{0}
5353};
5354
5355/********** SREM ********************/
5356
5357/* SREM history */
5358commandHistory SREM_History[] = {
5359{"2.4.0","Accepts multiple `member` arguments."},
5360{0}
5361};
5362
5363/* SREM tips */
5364#define SREM_tips NULL
5365
5366/* SREM argument table */
5367struct redisCommandArg SREM_Args[] = {
5368{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5369{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5370{0}
5371};
5372
5373/********** SSCAN ********************/
5374
5375/* SSCAN history */
5376#define SSCAN_History NULL
5377
5378/* SSCAN tips */
5379const char *SSCAN_tips[] = {
5380"nondeterministic_output",
5381NULL
5382};
5383
5384/* SSCAN argument table */
5385struct redisCommandArg SSCAN_Args[] = {
5386{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5387{"cursor",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5388{"pattern",ARG_TYPE_PATTERN,-1,"MATCH",NULL,NULL,CMD_ARG_OPTIONAL},
5389{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
5390{0}
5391};
5392
5393/********** SUNION ********************/
5394
5395/* SUNION history */
5396#define SUNION_History NULL
5397
5398/* SUNION tips */
5399const char *SUNION_tips[] = {
5400"nondeterministic_output_order",
5401NULL
5402};
5403
5404/* SUNION argument table */
5405struct redisCommandArg SUNION_Args[] = {
5406{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5407{0}
5408};
5409
5410/********** SUNIONSTORE ********************/
5411
5412/* SUNIONSTORE history */
5413#define SUNIONSTORE_History NULL
5414
5415/* SUNIONSTORE tips */
5416#define SUNIONSTORE_tips NULL
5417
5418/* SUNIONSTORE argument table */
5419struct redisCommandArg SUNIONSTORE_Args[] = {
5420{"destination",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5421{"key",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5422{0}
5423};
5424
5425/********** BZMPOP ********************/
5426
5427/* BZMPOP history */
5428#define BZMPOP_History NULL
5429
5430/* BZMPOP tips */
5431#define BZMPOP_tips NULL
5432
5433/* BZMPOP where argument table */
5434struct redisCommandArg BZMPOP_where_Subargs[] = {
5435{"min",ARG_TYPE_PURE_TOKEN,-1,"MIN",NULL,NULL,CMD_ARG_NONE},
5436{"max",ARG_TYPE_PURE_TOKEN,-1,"MAX",NULL,NULL,CMD_ARG_NONE},
5437{0}
5438};
5439
5440/* BZMPOP argument table */
5441struct redisCommandArg BZMPOP_Args[] = {
5442{"timeout",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5443{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5444{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5445{"where",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=BZMPOP_where_Subargs},
5446{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
5447{0}
5448};
5449
5450/********** BZPOPMAX ********************/
5451
5452/* BZPOPMAX history */
5453commandHistory BZPOPMAX_History[] = {
5454{"6.0.0","`timeout` is interpreted as a double instead of an integer."},
5455{0}
5456};
5457
5458/* BZPOPMAX tips */
5459#define BZPOPMAX_tips NULL
5460
5461/* BZPOPMAX argument table */
5462struct redisCommandArg BZPOPMAX_Args[] = {
5463{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5464{"timeout",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5465{0}
5466};
5467
5468/********** BZPOPMIN ********************/
5469
5470/* BZPOPMIN history */
5471commandHistory BZPOPMIN_History[] = {
5472{"6.0.0","`timeout` is interpreted as a double instead of an integer."},
5473{0}
5474};
5475
5476/* BZPOPMIN tips */
5477#define BZPOPMIN_tips NULL
5478
5479/* BZPOPMIN argument table */
5480struct redisCommandArg BZPOPMIN_Args[] = {
5481{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5482{"timeout",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5483{0}
5484};
5485
5486/********** ZADD ********************/
5487
5488/* ZADD history */
5489commandHistory ZADD_History[] = {
5490{"2.4.0","Accepts multiple elements."},
5491{"3.0.2","Added the `XX`, `NX`, `CH` and `INCR` options."},
5492{"6.2.0","Added the `GT` and `LT` options."},
5493{0}
5494};
5495
5496/* ZADD tips */
5497#define ZADD_tips NULL
5498
5499/* ZADD condition argument table */
5500struct redisCommandArg ZADD_condition_Subargs[] = {
5501{"nx",ARG_TYPE_PURE_TOKEN,-1,"NX",NULL,NULL,CMD_ARG_NONE},
5502{"xx",ARG_TYPE_PURE_TOKEN,-1,"XX",NULL,NULL,CMD_ARG_NONE},
5503{0}
5504};
5505
5506/* ZADD comparison argument table */
5507struct redisCommandArg ZADD_comparison_Subargs[] = {
5508{"gt",ARG_TYPE_PURE_TOKEN,-1,"GT",NULL,NULL,CMD_ARG_NONE},
5509{"lt",ARG_TYPE_PURE_TOKEN,-1,"LT",NULL,NULL,CMD_ARG_NONE},
5510{0}
5511};
5512
5513/* ZADD score_member argument table */
5514struct redisCommandArg ZADD_score_member_Subargs[] = {
5515{"score",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5516{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5517{0}
5518};
5519
5520/* ZADD argument table */
5521struct redisCommandArg ZADD_Args[] = {
5522{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5523{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"3.0.2",CMD_ARG_OPTIONAL,.subargs=ZADD_condition_Subargs},
5524{"comparison",ARG_TYPE_ONEOF,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=ZADD_comparison_Subargs},
5525{"change",ARG_TYPE_PURE_TOKEN,-1,"CH",NULL,"3.0.2",CMD_ARG_OPTIONAL},
5526{"increment",ARG_TYPE_PURE_TOKEN,-1,"INCR",NULL,"3.0.2",CMD_ARG_OPTIONAL},
5527{"score_member",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=ZADD_score_member_Subargs},
5528{0}
5529};
5530
5531/********** ZCARD ********************/
5532
5533/* ZCARD history */
5534#define ZCARD_History NULL
5535
5536/* ZCARD tips */
5537#define ZCARD_tips NULL
5538
5539/* ZCARD argument table */
5540struct redisCommandArg ZCARD_Args[] = {
5541{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5542{0}
5543};
5544
5545/********** ZCOUNT ********************/
5546
5547/* ZCOUNT history */
5548#define ZCOUNT_History NULL
5549
5550/* ZCOUNT tips */
5551#define ZCOUNT_tips NULL
5552
5553/* ZCOUNT argument table */
5554struct redisCommandArg ZCOUNT_Args[] = {
5555{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5556{"min",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5557{"max",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5558{0}
5559};
5560
5561/********** ZDIFF ********************/
5562
5563/* ZDIFF history */
5564#define ZDIFF_History NULL
5565
5566/* ZDIFF tips */
5567#define ZDIFF_tips NULL
5568
5569/* ZDIFF argument table */
5570struct redisCommandArg ZDIFF_Args[] = {
5571{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5572{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5573{"withscores",ARG_TYPE_PURE_TOKEN,-1,"WITHSCORES",NULL,NULL,CMD_ARG_OPTIONAL},
5574{0}
5575};
5576
5577/********** ZDIFFSTORE ********************/
5578
5579/* ZDIFFSTORE history */
5580#define ZDIFFSTORE_History NULL
5581
5582/* ZDIFFSTORE tips */
5583#define ZDIFFSTORE_tips NULL
5584
5585/* ZDIFFSTORE argument table */
5586struct redisCommandArg ZDIFFSTORE_Args[] = {
5587{"destination",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5588{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5589{"key",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5590{0}
5591};
5592
5593/********** ZINCRBY ********************/
5594
5595/* ZINCRBY history */
5596#define ZINCRBY_History NULL
5597
5598/* ZINCRBY tips */
5599#define ZINCRBY_tips NULL
5600
5601/* ZINCRBY argument table */
5602struct redisCommandArg ZINCRBY_Args[] = {
5603{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5604{"increment",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5605{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5606{0}
5607};
5608
5609/********** ZINTER ********************/
5610
5611/* ZINTER history */
5612#define ZINTER_History NULL
5613
5614/* ZINTER tips */
5615#define ZINTER_tips NULL
5616
5617/* ZINTER aggregate argument table */
5618struct redisCommandArg ZINTER_aggregate_Subargs[] = {
5619{"sum",ARG_TYPE_PURE_TOKEN,-1,"SUM",NULL,NULL,CMD_ARG_NONE},
5620{"min",ARG_TYPE_PURE_TOKEN,-1,"MIN",NULL,NULL,CMD_ARG_NONE},
5621{"max",ARG_TYPE_PURE_TOKEN,-1,"MAX",NULL,NULL,CMD_ARG_NONE},
5622{0}
5623};
5624
5625/* ZINTER argument table */
5626struct redisCommandArg ZINTER_Args[] = {
5627{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5628{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5629{"weight",ARG_TYPE_INTEGER,-1,"WEIGHTS",NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
5630{"aggregate",ARG_TYPE_ONEOF,-1,"AGGREGATE",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZINTER_aggregate_Subargs},
5631{"withscores",ARG_TYPE_PURE_TOKEN,-1,"WITHSCORES",NULL,NULL,CMD_ARG_OPTIONAL},
5632{0}
5633};
5634
5635/********** ZINTERCARD ********************/
5636
5637/* ZINTERCARD history */
5638#define ZINTERCARD_History NULL
5639
5640/* ZINTERCARD tips */
5641#define ZINTERCARD_tips NULL
5642
5643/* ZINTERCARD argument table */
5644struct redisCommandArg ZINTERCARD_Args[] = {
5645{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5646{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5647{"limit",ARG_TYPE_INTEGER,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL},
5648{0}
5649};
5650
5651/********** ZINTERSTORE ********************/
5652
5653/* ZINTERSTORE history */
5654#define ZINTERSTORE_History NULL
5655
5656/* ZINTERSTORE tips */
5657#define ZINTERSTORE_tips NULL
5658
5659/* ZINTERSTORE aggregate argument table */
5660struct redisCommandArg ZINTERSTORE_aggregate_Subargs[] = {
5661{"sum",ARG_TYPE_PURE_TOKEN,-1,"SUM",NULL,NULL,CMD_ARG_NONE},
5662{"min",ARG_TYPE_PURE_TOKEN,-1,"MIN",NULL,NULL,CMD_ARG_NONE},
5663{"max",ARG_TYPE_PURE_TOKEN,-1,"MAX",NULL,NULL,CMD_ARG_NONE},
5664{0}
5665};
5666
5667/* ZINTERSTORE argument table */
5668struct redisCommandArg ZINTERSTORE_Args[] = {
5669{"destination",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5670{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5671{"key",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5672{"weight",ARG_TYPE_INTEGER,-1,"WEIGHTS",NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
5673{"aggregate",ARG_TYPE_ONEOF,-1,"AGGREGATE",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZINTERSTORE_aggregate_Subargs},
5674{0}
5675};
5676
5677/********** ZLEXCOUNT ********************/
5678
5679/* ZLEXCOUNT history */
5680#define ZLEXCOUNT_History NULL
5681
5682/* ZLEXCOUNT tips */
5683#define ZLEXCOUNT_tips NULL
5684
5685/* ZLEXCOUNT argument table */
5686struct redisCommandArg ZLEXCOUNT_Args[] = {
5687{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5688{"min",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5689{"max",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5690{0}
5691};
5692
5693/********** ZMPOP ********************/
5694
5695/* ZMPOP history */
5696#define ZMPOP_History NULL
5697
5698/* ZMPOP tips */
5699#define ZMPOP_tips NULL
5700
5701/* ZMPOP where argument table */
5702struct redisCommandArg ZMPOP_where_Subargs[] = {
5703{"min",ARG_TYPE_PURE_TOKEN,-1,"MIN",NULL,NULL,CMD_ARG_NONE},
5704{"max",ARG_TYPE_PURE_TOKEN,-1,"MAX",NULL,NULL,CMD_ARG_NONE},
5705{0}
5706};
5707
5708/* ZMPOP argument table */
5709struct redisCommandArg ZMPOP_Args[] = {
5710{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5711{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5712{"where",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=ZMPOP_where_Subargs},
5713{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
5714{0}
5715};
5716
5717/********** ZMSCORE ********************/
5718
5719/* ZMSCORE history */
5720#define ZMSCORE_History NULL
5721
5722/* ZMSCORE tips */
5723#define ZMSCORE_tips NULL
5724
5725/* ZMSCORE argument table */
5726struct redisCommandArg ZMSCORE_Args[] = {
5727{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5728{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5729{0}
5730};
5731
5732/********** ZPOPMAX ********************/
5733
5734/* ZPOPMAX history */
5735#define ZPOPMAX_History NULL
5736
5737/* ZPOPMAX tips */
5738#define ZPOPMAX_tips NULL
5739
5740/* ZPOPMAX argument table */
5741struct redisCommandArg ZPOPMAX_Args[] = {
5742{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5743{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL},
5744{0}
5745};
5746
5747/********** ZPOPMIN ********************/
5748
5749/* ZPOPMIN history */
5750#define ZPOPMIN_History NULL
5751
5752/* ZPOPMIN tips */
5753#define ZPOPMIN_tips NULL
5754
5755/* ZPOPMIN argument table */
5756struct redisCommandArg ZPOPMIN_Args[] = {
5757{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5758{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL},
5759{0}
5760};
5761
5762/********** ZRANDMEMBER ********************/
5763
5764/* ZRANDMEMBER history */
5765#define ZRANDMEMBER_History NULL
5766
5767/* ZRANDMEMBER tips */
5768const char *ZRANDMEMBER_tips[] = {
5769"nondeterministic_output",
5770NULL
5771};
5772
5773/* ZRANDMEMBER options argument table */
5774struct redisCommandArg ZRANDMEMBER_options_Subargs[] = {
5775{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5776{"withscores",ARG_TYPE_PURE_TOKEN,-1,"WITHSCORES",NULL,NULL,CMD_ARG_OPTIONAL},
5777{0}
5778};
5779
5780/* ZRANDMEMBER argument table */
5781struct redisCommandArg ZRANDMEMBER_Args[] = {
5782{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5783{"options",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZRANDMEMBER_options_Subargs},
5784{0}
5785};
5786
5787/********** ZRANGE ********************/
5788
5789/* ZRANGE history */
5790commandHistory ZRANGE_History[] = {
5791{"6.2.0","Added the `REV`, `BYSCORE`, `BYLEX` and `LIMIT` options."},
5792{0}
5793};
5794
5795/* ZRANGE tips */
5796#define ZRANGE_tips NULL
5797
5798/* ZRANGE sortby argument table */
5799struct redisCommandArg ZRANGE_sortby_Subargs[] = {
5800{"byscore",ARG_TYPE_PURE_TOKEN,-1,"BYSCORE",NULL,NULL,CMD_ARG_NONE},
5801{"bylex",ARG_TYPE_PURE_TOKEN,-1,"BYLEX",NULL,NULL,CMD_ARG_NONE},
5802{0}
5803};
5804
5805/* ZRANGE offset_count argument table */
5806struct redisCommandArg ZRANGE_offset_count_Subargs[] = {
5807{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5808{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5809{0}
5810};
5811
5812/* ZRANGE argument table */
5813struct redisCommandArg ZRANGE_Args[] = {
5814{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5815{"start",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5816{"stop",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5817{"sortby",ARG_TYPE_ONEOF,-1,NULL,NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=ZRANGE_sortby_Subargs},
5818{"rev",ARG_TYPE_PURE_TOKEN,-1,"REV",NULL,"6.2.0",CMD_ARG_OPTIONAL},
5819{"offset_count",ARG_TYPE_BLOCK,-1,"LIMIT",NULL,"6.2.0",CMD_ARG_OPTIONAL,.subargs=ZRANGE_offset_count_Subargs},
5820{"withscores",ARG_TYPE_PURE_TOKEN,-1,"WITHSCORES",NULL,NULL,CMD_ARG_OPTIONAL},
5821{0}
5822};
5823
5824/********** ZRANGEBYLEX ********************/
5825
5826/* ZRANGEBYLEX history */
5827#define ZRANGEBYLEX_History NULL
5828
5829/* ZRANGEBYLEX tips */
5830#define ZRANGEBYLEX_tips NULL
5831
5832/* ZRANGEBYLEX offset_count argument table */
5833struct redisCommandArg ZRANGEBYLEX_offset_count_Subargs[] = {
5834{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5835{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5836{0}
5837};
5838
5839/* ZRANGEBYLEX argument table */
5840struct redisCommandArg ZRANGEBYLEX_Args[] = {
5841{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5842{"min",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5843{"max",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5844{"offset_count",ARG_TYPE_BLOCK,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZRANGEBYLEX_offset_count_Subargs},
5845{0}
5846};
5847
5848/********** ZRANGEBYSCORE ********************/
5849
5850/* ZRANGEBYSCORE history */
5851commandHistory ZRANGEBYSCORE_History[] = {
5852{"2.0.0","Added the `WITHSCORES` modifier."},
5853{0}
5854};
5855
5856/* ZRANGEBYSCORE tips */
5857#define ZRANGEBYSCORE_tips NULL
5858
5859/* ZRANGEBYSCORE offset_count argument table */
5860struct redisCommandArg ZRANGEBYSCORE_offset_count_Subargs[] = {
5861{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5862{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5863{0}
5864};
5865
5866/* ZRANGEBYSCORE argument table */
5867struct redisCommandArg ZRANGEBYSCORE_Args[] = {
5868{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5869{"min",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5870{"max",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5871{"withscores",ARG_TYPE_PURE_TOKEN,-1,"WITHSCORES",NULL,"2.0.0",CMD_ARG_OPTIONAL},
5872{"offset_count",ARG_TYPE_BLOCK,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZRANGEBYSCORE_offset_count_Subargs},
5873{0}
5874};
5875
5876/********** ZRANGESTORE ********************/
5877
5878/* ZRANGESTORE history */
5879#define ZRANGESTORE_History NULL
5880
5881/* ZRANGESTORE tips */
5882#define ZRANGESTORE_tips NULL
5883
5884/* ZRANGESTORE sortby argument table */
5885struct redisCommandArg ZRANGESTORE_sortby_Subargs[] = {
5886{"byscore",ARG_TYPE_PURE_TOKEN,-1,"BYSCORE",NULL,NULL,CMD_ARG_NONE},
5887{"bylex",ARG_TYPE_PURE_TOKEN,-1,"BYLEX",NULL,NULL,CMD_ARG_NONE},
5888{0}
5889};
5890
5891/* ZRANGESTORE offset_count argument table */
5892struct redisCommandArg ZRANGESTORE_offset_count_Subargs[] = {
5893{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5894{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5895{0}
5896};
5897
5898/* ZRANGESTORE argument table */
5899struct redisCommandArg ZRANGESTORE_Args[] = {
5900{"dst",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5901{"src",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_NONE},
5902{"min",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5903{"max",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5904{"sortby",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZRANGESTORE_sortby_Subargs},
5905{"rev",ARG_TYPE_PURE_TOKEN,-1,"REV",NULL,NULL,CMD_ARG_OPTIONAL},
5906{"offset_count",ARG_TYPE_BLOCK,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZRANGESTORE_offset_count_Subargs},
5907{0}
5908};
5909
5910/********** ZRANK ********************/
5911
5912/* ZRANK history */
5913#define ZRANK_History NULL
5914
5915/* ZRANK tips */
5916#define ZRANK_tips NULL
5917
5918/* ZRANK argument table */
5919struct redisCommandArg ZRANK_Args[] = {
5920{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5921{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5922{0}
5923};
5924
5925/********** ZREM ********************/
5926
5927/* ZREM history */
5928commandHistory ZREM_History[] = {
5929{"2.4.0","Accepts multiple elements."},
5930{0}
5931};
5932
5933/* ZREM tips */
5934#define ZREM_tips NULL
5935
5936/* ZREM argument table */
5937struct redisCommandArg ZREM_Args[] = {
5938{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5939{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
5940{0}
5941};
5942
5943/********** ZREMRANGEBYLEX ********************/
5944
5945/* ZREMRANGEBYLEX history */
5946#define ZREMRANGEBYLEX_History NULL
5947
5948/* ZREMRANGEBYLEX tips */
5949#define ZREMRANGEBYLEX_tips NULL
5950
5951/* ZREMRANGEBYLEX argument table */
5952struct redisCommandArg ZREMRANGEBYLEX_Args[] = {
5953{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5954{"min",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5955{"max",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5956{0}
5957};
5958
5959/********** ZREMRANGEBYRANK ********************/
5960
5961/* ZREMRANGEBYRANK history */
5962#define ZREMRANGEBYRANK_History NULL
5963
5964/* ZREMRANGEBYRANK tips */
5965#define ZREMRANGEBYRANK_tips NULL
5966
5967/* ZREMRANGEBYRANK argument table */
5968struct redisCommandArg ZREMRANGEBYRANK_Args[] = {
5969{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5970{"start",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5971{"stop",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5972{0}
5973};
5974
5975/********** ZREMRANGEBYSCORE ********************/
5976
5977/* ZREMRANGEBYSCORE history */
5978#define ZREMRANGEBYSCORE_History NULL
5979
5980/* ZREMRANGEBYSCORE tips */
5981#define ZREMRANGEBYSCORE_tips NULL
5982
5983/* ZREMRANGEBYSCORE argument table */
5984struct redisCommandArg ZREMRANGEBYSCORE_Args[] = {
5985{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
5986{"min",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5987{"max",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
5988{0}
5989};
5990
5991/********** ZREVRANGE ********************/
5992
5993/* ZREVRANGE history */
5994#define ZREVRANGE_History NULL
5995
5996/* ZREVRANGE tips */
5997#define ZREVRANGE_tips NULL
5998
5999/* ZREVRANGE argument table */
6000struct redisCommandArg ZREVRANGE_Args[] = {
6001{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6002{"start",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6003{"stop",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6004{"withscores",ARG_TYPE_PURE_TOKEN,-1,"WITHSCORES",NULL,NULL,CMD_ARG_OPTIONAL},
6005{0}
6006};
6007
6008/********** ZREVRANGEBYLEX ********************/
6009
6010/* ZREVRANGEBYLEX history */
6011#define ZREVRANGEBYLEX_History NULL
6012
6013/* ZREVRANGEBYLEX tips */
6014#define ZREVRANGEBYLEX_tips NULL
6015
6016/* ZREVRANGEBYLEX offset_count argument table */
6017struct redisCommandArg ZREVRANGEBYLEX_offset_count_Subargs[] = {
6018{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6019{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6020{0}
6021};
6022
6023/* ZREVRANGEBYLEX argument table */
6024struct redisCommandArg ZREVRANGEBYLEX_Args[] = {
6025{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6026{"max",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6027{"min",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6028{"offset_count",ARG_TYPE_BLOCK,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZREVRANGEBYLEX_offset_count_Subargs},
6029{0}
6030};
6031
6032/********** ZREVRANGEBYSCORE ********************/
6033
6034/* ZREVRANGEBYSCORE history */
6035commandHistory ZREVRANGEBYSCORE_History[] = {
6036{"2.1.6","`min` and `max` can be exclusive."},
6037{0}
6038};
6039
6040/* ZREVRANGEBYSCORE tips */
6041#define ZREVRANGEBYSCORE_tips NULL
6042
6043/* ZREVRANGEBYSCORE offset_count argument table */
6044struct redisCommandArg ZREVRANGEBYSCORE_offset_count_Subargs[] = {
6045{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6046{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6047{0}
6048};
6049
6050/* ZREVRANGEBYSCORE argument table */
6051struct redisCommandArg ZREVRANGEBYSCORE_Args[] = {
6052{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6053{"max",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6054{"min",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6055{"withscores",ARG_TYPE_PURE_TOKEN,-1,"WITHSCORES",NULL,NULL,CMD_ARG_OPTIONAL},
6056{"offset_count",ARG_TYPE_BLOCK,-1,"LIMIT",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZREVRANGEBYSCORE_offset_count_Subargs},
6057{0}
6058};
6059
6060/********** ZREVRANK ********************/
6061
6062/* ZREVRANK history */
6063#define ZREVRANK_History NULL
6064
6065/* ZREVRANK tips */
6066#define ZREVRANK_tips NULL
6067
6068/* ZREVRANK argument table */
6069struct redisCommandArg ZREVRANK_Args[] = {
6070{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6071{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6072{0}
6073};
6074
6075/********** ZSCAN ********************/
6076
6077/* ZSCAN history */
6078#define ZSCAN_History NULL
6079
6080/* ZSCAN tips */
6081const char *ZSCAN_tips[] = {
6082"nondeterministic_output",
6083NULL
6084};
6085
6086/* ZSCAN argument table */
6087struct redisCommandArg ZSCAN_Args[] = {
6088{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6089{"cursor",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6090{"pattern",ARG_TYPE_PATTERN,-1,"MATCH",NULL,NULL,CMD_ARG_OPTIONAL},
6091{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
6092{0}
6093};
6094
6095/********** ZSCORE ********************/
6096
6097/* ZSCORE history */
6098#define ZSCORE_History NULL
6099
6100/* ZSCORE tips */
6101#define ZSCORE_tips NULL
6102
6103/* ZSCORE argument table */
6104struct redisCommandArg ZSCORE_Args[] = {
6105{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6106{"member",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6107{0}
6108};
6109
6110/********** ZUNION ********************/
6111
6112/* ZUNION history */
6113#define ZUNION_History NULL
6114
6115/* ZUNION tips */
6116#define ZUNION_tips NULL
6117
6118/* ZUNION aggregate argument table */
6119struct redisCommandArg ZUNION_aggregate_Subargs[] = {
6120{"sum",ARG_TYPE_PURE_TOKEN,-1,"SUM",NULL,NULL,CMD_ARG_NONE},
6121{"min",ARG_TYPE_PURE_TOKEN,-1,"MIN",NULL,NULL,CMD_ARG_NONE},
6122{"max",ARG_TYPE_PURE_TOKEN,-1,"MAX",NULL,NULL,CMD_ARG_NONE},
6123{0}
6124};
6125
6126/* ZUNION argument table */
6127struct redisCommandArg ZUNION_Args[] = {
6128{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6129{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
6130{"weight",ARG_TYPE_INTEGER,-1,"WEIGHTS",NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
6131{"aggregate",ARG_TYPE_ONEOF,-1,"AGGREGATE",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZUNION_aggregate_Subargs},
6132{"withscores",ARG_TYPE_PURE_TOKEN,-1,"WITHSCORES",NULL,NULL,CMD_ARG_OPTIONAL},
6133{0}
6134};
6135
6136/********** ZUNIONSTORE ********************/
6137
6138/* ZUNIONSTORE history */
6139#define ZUNIONSTORE_History NULL
6140
6141/* ZUNIONSTORE tips */
6142#define ZUNIONSTORE_tips NULL
6143
6144/* ZUNIONSTORE aggregate argument table */
6145struct redisCommandArg ZUNIONSTORE_aggregate_Subargs[] = {
6146{"sum",ARG_TYPE_PURE_TOKEN,-1,"SUM",NULL,NULL,CMD_ARG_NONE},
6147{"min",ARG_TYPE_PURE_TOKEN,-1,"MIN",NULL,NULL,CMD_ARG_NONE},
6148{"max",ARG_TYPE_PURE_TOKEN,-1,"MAX",NULL,NULL,CMD_ARG_NONE},
6149{0}
6150};
6151
6152/* ZUNIONSTORE argument table */
6153struct redisCommandArg ZUNIONSTORE_Args[] = {
6154{"destination",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6155{"numkeys",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6156{"key",ARG_TYPE_KEY,1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
6157{"weight",ARG_TYPE_INTEGER,-1,"WEIGHTS",NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE},
6158{"aggregate",ARG_TYPE_ONEOF,-1,"AGGREGATE",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=ZUNIONSTORE_aggregate_Subargs},
6159{0}
6160};
6161
6162/********** XACK ********************/
6163
6164/* XACK history */
6165#define XACK_History NULL
6166
6167/* XACK tips */
6168#define XACK_tips NULL
6169
6170/* XACK argument table */
6171struct redisCommandArg XACK_Args[] = {
6172{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6173{"group",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6174{"id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
6175{0}
6176};
6177
6178/********** XADD ********************/
6179
6180/* XADD history */
6181commandHistory XADD_History[] = {
6182{"6.2.0","Added the `NOMKSTREAM` option, `MINID` trimming strategy and the `LIMIT` option."},
6183{"7.0.0","Added support for the `<ms>-*` explicit ID form."},
6184{0}
6185};
6186
6187/* XADD tips */
6188const char *XADD_tips[] = {
6189"nondeterministic_output",
6190NULL
6191};
6192
6193/* XADD trim strategy argument table */
6194struct redisCommandArg XADD_trim_strategy_Subargs[] = {
6195{"maxlen",ARG_TYPE_PURE_TOKEN,-1,"MAXLEN",NULL,NULL,CMD_ARG_NONE},
6196{"minid",ARG_TYPE_PURE_TOKEN,-1,"MINID",NULL,"6.2.0",CMD_ARG_NONE},
6197{0}
6198};
6199
6200/* XADD trim operator argument table */
6201struct redisCommandArg XADD_trim_operator_Subargs[] = {
6202{"equal",ARG_TYPE_PURE_TOKEN,-1,"=",NULL,NULL,CMD_ARG_NONE},
6203{"approximately",ARG_TYPE_PURE_TOKEN,-1,"~",NULL,NULL,CMD_ARG_NONE},
6204{0}
6205};
6206
6207/* XADD trim argument table */
6208struct redisCommandArg XADD_trim_Subargs[] = {
6209{"strategy",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=XADD_trim_strategy_Subargs},
6210{"operator",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=XADD_trim_operator_Subargs},
6211{"threshold",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6212{"count",ARG_TYPE_INTEGER,-1,"LIMIT",NULL,"6.2.0",CMD_ARG_OPTIONAL},
6213{0}
6214};
6215
6216/* XADD id_or_auto argument table */
6217struct redisCommandArg XADD_id_or_auto_Subargs[] = {
6218{"auto_id",ARG_TYPE_PURE_TOKEN,-1,"*",NULL,NULL,CMD_ARG_NONE},
6219{"id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6220{0}
6221};
6222
6223/* XADD field_value argument table */
6224struct redisCommandArg XADD_field_value_Subargs[] = {
6225{"field",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6226{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6227{0}
6228};
6229
6230/* XADD argument table */
6231struct redisCommandArg XADD_Args[] = {
6232{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6233{"nomkstream",ARG_TYPE_PURE_TOKEN,-1,"NOMKSTREAM",NULL,"6.2.0",CMD_ARG_OPTIONAL},
6234{"trim",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=XADD_trim_Subargs},
6235{"id_or_auto",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=XADD_id_or_auto_Subargs},
6236{"field_value",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=XADD_field_value_Subargs},
6237{0}
6238};
6239
6240/********** XAUTOCLAIM ********************/
6241
6242/* XAUTOCLAIM history */
6243commandHistory XAUTOCLAIM_History[] = {
6244{"7.0.0","Added an element to the reply array, containing deleted entries the command cleared from the PEL"},
6245{0}
6246};
6247
6248/* XAUTOCLAIM tips */
6249const char *XAUTOCLAIM_tips[] = {
6250"nondeterministic_output",
6251NULL
6252};
6253
6254/* XAUTOCLAIM argument table */
6255struct redisCommandArg XAUTOCLAIM_Args[] = {
6256{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6257{"group",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6258{"consumer",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6259{"min-idle-time",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6260{"start",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6261{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
6262{"justid",ARG_TYPE_PURE_TOKEN,-1,"JUSTID",NULL,NULL,CMD_ARG_OPTIONAL},
6263{0}
6264};
6265
6266/********** XCLAIM ********************/
6267
6268/* XCLAIM history */
6269#define XCLAIM_History NULL
6270
6271/* XCLAIM tips */
6272const char *XCLAIM_tips[] = {
6273"nondeterministic_output",
6274NULL
6275};
6276
6277/* XCLAIM argument table */
6278struct redisCommandArg XCLAIM_Args[] = {
6279{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6280{"group",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6281{"consumer",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6282{"min-idle-time",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6283{"id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
6284{"ms",ARG_TYPE_INTEGER,-1,"IDLE",NULL,NULL,CMD_ARG_OPTIONAL},
6285{"unix-time-milliseconds",ARG_TYPE_UNIX_TIME,-1,"TIME",NULL,NULL,CMD_ARG_OPTIONAL},
6286{"count",ARG_TYPE_INTEGER,-1,"RETRYCOUNT",NULL,NULL,CMD_ARG_OPTIONAL},
6287{"force",ARG_TYPE_PURE_TOKEN,-1,"FORCE",NULL,NULL,CMD_ARG_OPTIONAL},
6288{"justid",ARG_TYPE_PURE_TOKEN,-1,"JUSTID",NULL,NULL,CMD_ARG_OPTIONAL},
6289{0}
6290};
6291
6292/********** XDEL ********************/
6293
6294/* XDEL history */
6295#define XDEL_History NULL
6296
6297/* XDEL tips */
6298#define XDEL_tips NULL
6299
6300/* XDEL argument table */
6301struct redisCommandArg XDEL_Args[] = {
6302{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6303{"id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
6304{0}
6305};
6306
6307/********** XGROUP CREATE ********************/
6308
6309/* XGROUP CREATE history */
6310commandHistory XGROUP_CREATE_History[] = {
6311{"7.0.0","Added the `entries_read` named argument."},
6312{0}
6313};
6314
6315/* XGROUP CREATE tips */
6316#define XGROUP_CREATE_tips NULL
6317
6318/* XGROUP CREATE id argument table */
6319struct redisCommandArg XGROUP_CREATE_id_Subargs[] = {
6320{"id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6321{"new_id",ARG_TYPE_PURE_TOKEN,-1,"$",NULL,NULL,CMD_ARG_NONE},
6322{0}
6323};
6324
6325/* XGROUP CREATE argument table */
6326struct redisCommandArg XGROUP_CREATE_Args[] = {
6327{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6328{"groupname",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6329{"id",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=XGROUP_CREATE_id_Subargs},
6330{"mkstream",ARG_TYPE_PURE_TOKEN,-1,"MKSTREAM",NULL,NULL,CMD_ARG_OPTIONAL},
6331{"entries_read",ARG_TYPE_INTEGER,-1,"ENTRIESREAD",NULL,NULL,CMD_ARG_OPTIONAL},
6332{0}
6333};
6334
6335/********** XGROUP CREATECONSUMER ********************/
6336
6337/* XGROUP CREATECONSUMER history */
6338#define XGROUP_CREATECONSUMER_History NULL
6339
6340/* XGROUP CREATECONSUMER tips */
6341#define XGROUP_CREATECONSUMER_tips NULL
6342
6343/* XGROUP CREATECONSUMER argument table */
6344struct redisCommandArg XGROUP_CREATECONSUMER_Args[] = {
6345{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6346{"groupname",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6347{"consumername",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6348{0}
6349};
6350
6351/********** XGROUP DELCONSUMER ********************/
6352
6353/* XGROUP DELCONSUMER history */
6354#define XGROUP_DELCONSUMER_History NULL
6355
6356/* XGROUP DELCONSUMER tips */
6357#define XGROUP_DELCONSUMER_tips NULL
6358
6359/* XGROUP DELCONSUMER argument table */
6360struct redisCommandArg XGROUP_DELCONSUMER_Args[] = {
6361{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6362{"groupname",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6363{"consumername",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6364{0}
6365};
6366
6367/********** XGROUP DESTROY ********************/
6368
6369/* XGROUP DESTROY history */
6370#define XGROUP_DESTROY_History NULL
6371
6372/* XGROUP DESTROY tips */
6373#define XGROUP_DESTROY_tips NULL
6374
6375/* XGROUP DESTROY argument table */
6376struct redisCommandArg XGROUP_DESTROY_Args[] = {
6377{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6378{"groupname",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6379{0}
6380};
6381
6382/********** XGROUP HELP ********************/
6383
6384/* XGROUP HELP history */
6385#define XGROUP_HELP_History NULL
6386
6387/* XGROUP HELP tips */
6388#define XGROUP_HELP_tips NULL
6389
6390/********** XGROUP SETID ********************/
6391
6392/* XGROUP SETID history */
6393commandHistory XGROUP_SETID_History[] = {
6394{"7.0.0","Added the optional `entries_read` argument."},
6395{0}
6396};
6397
6398/* XGROUP SETID tips */
6399#define XGROUP_SETID_tips NULL
6400
6401/* XGROUP SETID id argument table */
6402struct redisCommandArg XGROUP_SETID_id_Subargs[] = {
6403{"id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6404{"new_id",ARG_TYPE_PURE_TOKEN,-1,"$",NULL,NULL,CMD_ARG_NONE},
6405{0}
6406};
6407
6408/* XGROUP SETID argument table */
6409struct redisCommandArg XGROUP_SETID_Args[] = {
6410{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6411{"groupname",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6412{"id",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=XGROUP_SETID_id_Subargs},
6413{"entries_read",ARG_TYPE_INTEGER,-1,"ENTRIESREAD",NULL,NULL,CMD_ARG_OPTIONAL},
6414{0}
6415};
6416
6417/* XGROUP command table */
6418struct redisCommand XGROUP_Subcommands[] = {
6419{"create","Create a consumer group.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XGROUP_CREATE_History,XGROUP_CREATE_tips,xgroupCommand,-5,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XGROUP_CREATE_Args},
6420{"createconsumer","Create a consumer in a consumer group.","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XGROUP_CREATECONSUMER_History,XGROUP_CREATECONSUMER_tips,xgroupCommand,5,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XGROUP_CREATECONSUMER_Args},
6421{"delconsumer","Delete a consumer from a consumer group.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XGROUP_DELCONSUMER_History,XGROUP_DELCONSUMER_tips,xgroupCommand,5,CMD_WRITE,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XGROUP_DELCONSUMER_Args},
6422{"destroy","Destroy a consumer group.","O(N) where N is the number of entries in the group's pending entries list (PEL).","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XGROUP_DESTROY_History,XGROUP_DESTROY_tips,xgroupCommand,4,CMD_WRITE,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XGROUP_DESTROY_Args},
6423{"help","Show helpful text about the different subcommands","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XGROUP_HELP_History,XGROUP_HELP_tips,xgroupCommand,2,CMD_LOADING|CMD_STALE,ACL_CATEGORY_STREAM},
6424{"setid","Set a consumer group to an arbitrary last delivered ID value.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XGROUP_SETID_History,XGROUP_SETID_tips,xgroupCommand,-5,CMD_WRITE,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XGROUP_SETID_Args},
6425{0}
6426};
6427
6428/********** XGROUP ********************/
6429
6430/* XGROUP history */
6431#define XGROUP_History NULL
6432
6433/* XGROUP tips */
6434#define XGROUP_tips NULL
6435
6436/********** XINFO CONSUMERS ********************/
6437
6438/* XINFO CONSUMERS history */
6439#define XINFO_CONSUMERS_History NULL
6440
6441/* XINFO CONSUMERS tips */
6442const char *XINFO_CONSUMERS_tips[] = {
6443"nondeterministic_output",
6444NULL
6445};
6446
6447/* XINFO CONSUMERS argument table */
6448struct redisCommandArg XINFO_CONSUMERS_Args[] = {
6449{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6450{"groupname",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6451{0}
6452};
6453
6454/********** XINFO GROUPS ********************/
6455
6456/* XINFO GROUPS history */
6457commandHistory XINFO_GROUPS_History[] = {
6458{"7.0.0","Added the `entries-read` and `lag` fields"},
6459{0}
6460};
6461
6462/* XINFO GROUPS tips */
6463#define XINFO_GROUPS_tips NULL
6464
6465/* XINFO GROUPS argument table */
6466struct redisCommandArg XINFO_GROUPS_Args[] = {
6467{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6468{0}
6469};
6470
6471/********** XINFO HELP ********************/
6472
6473/* XINFO HELP history */
6474#define XINFO_HELP_History NULL
6475
6476/* XINFO HELP tips */
6477#define XINFO_HELP_tips NULL
6478
6479/********** XINFO STREAM ********************/
6480
6481/* XINFO STREAM history */
6482commandHistory XINFO_STREAM_History[] = {
6483{"6.0.0","Added the `FULL` modifier."},
6484{"7.0.0","Added the `max-deleted-entry-id`, `entries-added`, `recorded-first-entry-id`, `entries-read` and `lag` fields"},
6485{0}
6486};
6487
6488/* XINFO STREAM tips */
6489#define XINFO_STREAM_tips NULL
6490
6491/* XINFO STREAM full argument table */
6492struct redisCommandArg XINFO_STREAM_full_Subargs[] = {
6493{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
6494{0}
6495};
6496
6497/* XINFO STREAM argument table */
6498struct redisCommandArg XINFO_STREAM_Args[] = {
6499{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6500{"full",ARG_TYPE_BLOCK,-1,"FULL",NULL,NULL,CMD_ARG_OPTIONAL,.subargs=XINFO_STREAM_full_Subargs},
6501{0}
6502};
6503
6504/* XINFO command table */
6505struct redisCommand XINFO_Subcommands[] = {
6506{"consumers","List the consumers in a consumer group","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XINFO_CONSUMERS_History,XINFO_CONSUMERS_tips,xinfoCommand,4,CMD_READONLY,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XINFO_CONSUMERS_Args},
6507{"groups","List the consumer groups of a stream","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XINFO_GROUPS_History,XINFO_GROUPS_tips,xinfoCommand,3,CMD_READONLY,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XINFO_GROUPS_Args},
6508{"help","Show helpful text about the different subcommands","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XINFO_HELP_History,XINFO_HELP_tips,xinfoCommand,2,CMD_LOADING|CMD_STALE,ACL_CATEGORY_STREAM},
6509{"stream","Get information about a stream","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XINFO_STREAM_History,XINFO_STREAM_tips,xinfoCommand,-3,CMD_READONLY,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XINFO_STREAM_Args},
6510{0}
6511};
6512
6513/********** XINFO ********************/
6514
6515/* XINFO history */
6516#define XINFO_History NULL
6517
6518/* XINFO tips */
6519#define XINFO_tips NULL
6520
6521/********** XLEN ********************/
6522
6523/* XLEN history */
6524#define XLEN_History NULL
6525
6526/* XLEN tips */
6527#define XLEN_tips NULL
6528
6529/* XLEN argument table */
6530struct redisCommandArg XLEN_Args[] = {
6531{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6532{0}
6533};
6534
6535/********** XPENDING ********************/
6536
6537/* XPENDING history */
6538commandHistory XPENDING_History[] = {
6539{"6.2.0","Added the `IDLE` option and exclusive range intervals."},
6540{0}
6541};
6542
6543/* XPENDING tips */
6544const char *XPENDING_tips[] = {
6545"nondeterministic_output",
6546NULL
6547};
6548
6549/* XPENDING filters argument table */
6550struct redisCommandArg XPENDING_filters_Subargs[] = {
6551{"min-idle-time",ARG_TYPE_INTEGER,-1,"IDLE",NULL,"6.2.0",CMD_ARG_OPTIONAL},
6552{"start",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6553{"end",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6554{"count",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6555{"consumer",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL},
6556{0}
6557};
6558
6559/* XPENDING argument table */
6560struct redisCommandArg XPENDING_Args[] = {
6561{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6562{"group",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6563{"filters",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=XPENDING_filters_Subargs},
6564{0}
6565};
6566
6567/********** XRANGE ********************/
6568
6569/* XRANGE history */
6570commandHistory XRANGE_History[] = {
6571{"6.2.0","Added exclusive ranges."},
6572{0}
6573};
6574
6575/* XRANGE tips */
6576#define XRANGE_tips NULL
6577
6578/* XRANGE argument table */
6579struct redisCommandArg XRANGE_Args[] = {
6580{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6581{"start",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6582{"end",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6583{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
6584{0}
6585};
6586
6587/********** XREAD ********************/
6588
6589/* XREAD history */
6590#define XREAD_History NULL
6591
6592/* XREAD tips */
6593#define XREAD_tips NULL
6594
6595/* XREAD streams argument table */
6596struct redisCommandArg XREAD_streams_Subargs[] = {
6597{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
6598{"id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
6599{0}
6600};
6601
6602/* XREAD argument table */
6603struct redisCommandArg XREAD_Args[] = {
6604{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
6605{"milliseconds",ARG_TYPE_INTEGER,-1,"BLOCK",NULL,NULL,CMD_ARG_OPTIONAL},
6606{"streams",ARG_TYPE_BLOCK,-1,"STREAMS",NULL,NULL,CMD_ARG_NONE,.subargs=XREAD_streams_Subargs},
6607{0}
6608};
6609
6610/********** XREADGROUP ********************/
6611
6612/* XREADGROUP history */
6613#define XREADGROUP_History NULL
6614
6615/* XREADGROUP tips */
6616#define XREADGROUP_tips NULL
6617
6618/* XREADGROUP group_consumer argument table */
6619struct redisCommandArg XREADGROUP_group_consumer_Subargs[] = {
6620{"group",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6621{"consumer",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6622{0}
6623};
6624
6625/* XREADGROUP streams argument table */
6626struct redisCommandArg XREADGROUP_streams_Subargs[] = {
6627{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
6628{"id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
6629{0}
6630};
6631
6632/* XREADGROUP argument table */
6633struct redisCommandArg XREADGROUP_Args[] = {
6634{"group_consumer",ARG_TYPE_BLOCK,-1,"GROUP",NULL,NULL,CMD_ARG_NONE,.subargs=XREADGROUP_group_consumer_Subargs},
6635{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
6636{"milliseconds",ARG_TYPE_INTEGER,-1,"BLOCK",NULL,NULL,CMD_ARG_OPTIONAL},
6637{"noack",ARG_TYPE_PURE_TOKEN,-1,"NOACK",NULL,NULL,CMD_ARG_OPTIONAL},
6638{"streams",ARG_TYPE_BLOCK,-1,"STREAMS",NULL,NULL,CMD_ARG_NONE,.subargs=XREADGROUP_streams_Subargs},
6639{0}
6640};
6641
6642/********** XREVRANGE ********************/
6643
6644/* XREVRANGE history */
6645commandHistory XREVRANGE_History[] = {
6646{"6.2.0","Added exclusive ranges."},
6647{0}
6648};
6649
6650/* XREVRANGE tips */
6651#define XREVRANGE_tips NULL
6652
6653/* XREVRANGE argument table */
6654struct redisCommandArg XREVRANGE_Args[] = {
6655{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6656{"end",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6657{"start",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6658{"count",ARG_TYPE_INTEGER,-1,"COUNT",NULL,NULL,CMD_ARG_OPTIONAL},
6659{0}
6660};
6661
6662/********** XSETID ********************/
6663
6664/* XSETID history */
6665commandHistory XSETID_History[] = {
6666{"7.0.0","Added the `entries_added` and `max_deleted_entry_id` arguments."},
6667{0}
6668};
6669
6670/* XSETID tips */
6671#define XSETID_tips NULL
6672
6673/* XSETID argument table */
6674struct redisCommandArg XSETID_Args[] = {
6675{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6676{"last-id",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6677{"entries_added",ARG_TYPE_INTEGER,-1,"ENTRIESADDED",NULL,NULL,CMD_ARG_OPTIONAL},
6678{"max_deleted_entry_id",ARG_TYPE_STRING,-1,"MAXDELETEDID",NULL,NULL,CMD_ARG_OPTIONAL},
6679{0}
6680};
6681
6682/********** XTRIM ********************/
6683
6684/* XTRIM history */
6685commandHistory XTRIM_History[] = {
6686{"6.2.0","Added the `MINID` trimming strategy and the `LIMIT` option."},
6687{0}
6688};
6689
6690/* XTRIM tips */
6691const char *XTRIM_tips[] = {
6692"nondeterministic_output",
6693NULL
6694};
6695
6696/* XTRIM trim strategy argument table */
6697struct redisCommandArg XTRIM_trim_strategy_Subargs[] = {
6698{"maxlen",ARG_TYPE_PURE_TOKEN,-1,"MAXLEN",NULL,NULL,CMD_ARG_NONE},
6699{"minid",ARG_TYPE_PURE_TOKEN,-1,"MINID",NULL,"6.2.0",CMD_ARG_NONE},
6700{0}
6701};
6702
6703/* XTRIM trim operator argument table */
6704struct redisCommandArg XTRIM_trim_operator_Subargs[] = {
6705{"equal",ARG_TYPE_PURE_TOKEN,-1,"=",NULL,NULL,CMD_ARG_NONE},
6706{"approximately",ARG_TYPE_PURE_TOKEN,-1,"~",NULL,NULL,CMD_ARG_NONE},
6707{0}
6708};
6709
6710/* XTRIM trim argument table */
6711struct redisCommandArg XTRIM_trim_Subargs[] = {
6712{"strategy",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=XTRIM_trim_strategy_Subargs},
6713{"operator",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=XTRIM_trim_operator_Subargs},
6714{"threshold",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6715{"count",ARG_TYPE_INTEGER,-1,"LIMIT",NULL,"6.2.0",CMD_ARG_OPTIONAL},
6716{0}
6717};
6718
6719/* XTRIM argument table */
6720struct redisCommandArg XTRIM_Args[] = {
6721{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6722{"trim",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=XTRIM_trim_Subargs},
6723{0}
6724};
6725
6726/********** APPEND ********************/
6727
6728/* APPEND history */
6729#define APPEND_History NULL
6730
6731/* APPEND tips */
6732#define APPEND_tips NULL
6733
6734/* APPEND argument table */
6735struct redisCommandArg APPEND_Args[] = {
6736{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6737{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6738{0}
6739};
6740
6741/********** DECR ********************/
6742
6743/* DECR history */
6744#define DECR_History NULL
6745
6746/* DECR tips */
6747#define DECR_tips NULL
6748
6749/* DECR argument table */
6750struct redisCommandArg DECR_Args[] = {
6751{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6752{0}
6753};
6754
6755/********** DECRBY ********************/
6756
6757/* DECRBY history */
6758#define DECRBY_History NULL
6759
6760/* DECRBY tips */
6761#define DECRBY_tips NULL
6762
6763/* DECRBY argument table */
6764struct redisCommandArg DECRBY_Args[] = {
6765{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6766{"decrement",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6767{0}
6768};
6769
6770/********** GET ********************/
6771
6772/* GET history */
6773#define GET_History NULL
6774
6775/* GET tips */
6776#define GET_tips NULL
6777
6778/* GET argument table */
6779struct redisCommandArg GET_Args[] = {
6780{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6781{0}
6782};
6783
6784/********** GETDEL ********************/
6785
6786/* GETDEL history */
6787#define GETDEL_History NULL
6788
6789/* GETDEL tips */
6790#define GETDEL_tips NULL
6791
6792/* GETDEL argument table */
6793struct redisCommandArg GETDEL_Args[] = {
6794{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6795{0}
6796};
6797
6798/********** GETEX ********************/
6799
6800/* GETEX history */
6801#define GETEX_History NULL
6802
6803/* GETEX tips */
6804#define GETEX_tips NULL
6805
6806/* GETEX expiration argument table */
6807struct redisCommandArg GETEX_expiration_Subargs[] = {
6808{"seconds",ARG_TYPE_INTEGER,-1,"EX",NULL,NULL,CMD_ARG_NONE},
6809{"milliseconds",ARG_TYPE_INTEGER,-1,"PX",NULL,NULL,CMD_ARG_NONE},
6810{"unix-time-seconds",ARG_TYPE_UNIX_TIME,-1,"EXAT",NULL,NULL,CMD_ARG_NONE},
6811{"unix-time-milliseconds",ARG_TYPE_UNIX_TIME,-1,"PXAT",NULL,NULL,CMD_ARG_NONE},
6812{"persist",ARG_TYPE_PURE_TOKEN,-1,"PERSIST",NULL,NULL,CMD_ARG_NONE},
6813{0}
6814};
6815
6816/* GETEX argument table */
6817struct redisCommandArg GETEX_Args[] = {
6818{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6819{"expiration",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=GETEX_expiration_Subargs},
6820{0}
6821};
6822
6823/********** GETRANGE ********************/
6824
6825/* GETRANGE history */
6826#define GETRANGE_History NULL
6827
6828/* GETRANGE tips */
6829#define GETRANGE_tips NULL
6830
6831/* GETRANGE argument table */
6832struct redisCommandArg GETRANGE_Args[] = {
6833{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6834{"start",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6835{"end",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6836{0}
6837};
6838
6839/********** GETSET ********************/
6840
6841/* GETSET history */
6842#define GETSET_History NULL
6843
6844/* GETSET tips */
6845#define GETSET_tips NULL
6846
6847/* GETSET argument table */
6848struct redisCommandArg GETSET_Args[] = {
6849{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6850{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6851{0}
6852};
6853
6854/********** INCR ********************/
6855
6856/* INCR history */
6857#define INCR_History NULL
6858
6859/* INCR tips */
6860#define INCR_tips NULL
6861
6862/* INCR argument table */
6863struct redisCommandArg INCR_Args[] = {
6864{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6865{0}
6866};
6867
6868/********** INCRBY ********************/
6869
6870/* INCRBY history */
6871#define INCRBY_History NULL
6872
6873/* INCRBY tips */
6874#define INCRBY_tips NULL
6875
6876/* INCRBY argument table */
6877struct redisCommandArg INCRBY_Args[] = {
6878{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6879{"increment",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6880{0}
6881};
6882
6883/********** INCRBYFLOAT ********************/
6884
6885/* INCRBYFLOAT history */
6886#define INCRBYFLOAT_History NULL
6887
6888/* INCRBYFLOAT tips */
6889#define INCRBYFLOAT_tips NULL
6890
6891/* INCRBYFLOAT argument table */
6892struct redisCommandArg INCRBYFLOAT_Args[] = {
6893{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6894{"increment",ARG_TYPE_DOUBLE,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6895{0}
6896};
6897
6898/********** LCS ********************/
6899
6900/* LCS history */
6901#define LCS_History NULL
6902
6903/* LCS tips */
6904#define LCS_tips NULL
6905
6906/* LCS argument table */
6907struct redisCommandArg LCS_Args[] = {
6908{"key1",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6909{"key2",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6910{"len",ARG_TYPE_PURE_TOKEN,-1,"LEN",NULL,NULL,CMD_ARG_OPTIONAL},
6911{"idx",ARG_TYPE_PURE_TOKEN,-1,"IDX",NULL,NULL,CMD_ARG_OPTIONAL},
6912{"len",ARG_TYPE_INTEGER,-1,"MINMATCHLEN",NULL,NULL,CMD_ARG_OPTIONAL},
6913{"withmatchlen",ARG_TYPE_PURE_TOKEN,-1,"WITHMATCHLEN",NULL,NULL,CMD_ARG_OPTIONAL},
6914{0}
6915};
6916
6917/********** MGET ********************/
6918
6919/* MGET history */
6920#define MGET_History NULL
6921
6922/* MGET tips */
6923const char *MGET_tips[] = {
6924"request_policy:multi_shard",
6925NULL
6926};
6927
6928/* MGET argument table */
6929struct redisCommandArg MGET_Args[] = {
6930{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
6931{0}
6932};
6933
6934/********** MSET ********************/
6935
6936/* MSET history */
6937#define MSET_History NULL
6938
6939/* MSET tips */
6940const char *MSET_tips[] = {
6941"request_policy:multi_shard",
6942"response_policy:all_succeeded",
6943NULL
6944};
6945
6946/* MSET key_value argument table */
6947struct redisCommandArg MSET_key_value_Subargs[] = {
6948{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6949{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6950{0}
6951};
6952
6953/* MSET argument table */
6954struct redisCommandArg MSET_Args[] = {
6955{"key_value",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=MSET_key_value_Subargs},
6956{0}
6957};
6958
6959/********** MSETNX ********************/
6960
6961/* MSETNX history */
6962#define MSETNX_History NULL
6963
6964/* MSETNX tips */
6965const char *MSETNX_tips[] = {
6966"request_policy:multi_shard",
6967"response_policy:agg_min",
6968NULL
6969};
6970
6971/* MSETNX key_value argument table */
6972struct redisCommandArg MSETNX_key_value_Subargs[] = {
6973{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6974{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6975{0}
6976};
6977
6978/* MSETNX argument table */
6979struct redisCommandArg MSETNX_Args[] = {
6980{"key_value",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=MSETNX_key_value_Subargs},
6981{0}
6982};
6983
6984/********** PSETEX ********************/
6985
6986/* PSETEX history */
6987#define PSETEX_History NULL
6988
6989/* PSETEX tips */
6990#define PSETEX_tips NULL
6991
6992/* PSETEX argument table */
6993struct redisCommandArg PSETEX_Args[] = {
6994{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
6995{"milliseconds",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6996{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
6997{0}
6998};
6999
7000/********** SET ********************/
7001
7002/* SET history */
7003commandHistory SET_History[] = {
7004{"2.6.12","Added the `EX`, `PX`, `NX` and `XX` options."},
7005{"6.0.0","Added the `KEEPTTL` option."},
7006{"6.2.0","Added the `GET`, `EXAT` and `PXAT` option."},
7007{"7.0.0","Allowed the `NX` and `GET` options to be used together."},
7008{0}
7009};
7010
7011/* SET tips */
7012#define SET_tips NULL
7013
7014/* SET condition argument table */
7015struct redisCommandArg SET_condition_Subargs[] = {
7016{"nx",ARG_TYPE_PURE_TOKEN,-1,"NX",NULL,NULL,CMD_ARG_NONE},
7017{"xx",ARG_TYPE_PURE_TOKEN,-1,"XX",NULL,NULL,CMD_ARG_NONE},
7018{0}
7019};
7020
7021/* SET expiration argument table */
7022struct redisCommandArg SET_expiration_Subargs[] = {
7023{"seconds",ARG_TYPE_INTEGER,-1,"EX",NULL,"2.6.12",CMD_ARG_NONE},
7024{"milliseconds",ARG_TYPE_INTEGER,-1,"PX",NULL,"2.6.12",CMD_ARG_NONE},
7025{"unix-time-seconds",ARG_TYPE_UNIX_TIME,-1,"EXAT",NULL,"6.2.0",CMD_ARG_NONE},
7026{"unix-time-milliseconds",ARG_TYPE_UNIX_TIME,-1,"PXAT",NULL,"6.2.0",CMD_ARG_NONE},
7027{"keepttl",ARG_TYPE_PURE_TOKEN,-1,"KEEPTTL",NULL,"6.0.0",CMD_ARG_NONE},
7028{0}
7029};
7030
7031/* SET argument table */
7032struct redisCommandArg SET_Args[] = {
7033{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
7034{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
7035{"condition",ARG_TYPE_ONEOF,-1,NULL,NULL,"2.6.12",CMD_ARG_OPTIONAL,.subargs=SET_condition_Subargs},
7036{"get",ARG_TYPE_PURE_TOKEN,-1,"GET",NULL,"6.2.0",CMD_ARG_OPTIONAL},
7037{"expiration",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,.subargs=SET_expiration_Subargs},
7038{0}
7039};
7040
7041/********** SETEX ********************/
7042
7043/* SETEX history */
7044#define SETEX_History NULL
7045
7046/* SETEX tips */
7047#define SETEX_tips NULL
7048
7049/* SETEX argument table */
7050struct redisCommandArg SETEX_Args[] = {
7051{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
7052{"seconds",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
7053{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
7054{0}
7055};
7056
7057/********** SETNX ********************/
7058
7059/* SETNX history */
7060#define SETNX_History NULL
7061
7062/* SETNX tips */
7063#define SETNX_tips NULL
7064
7065/* SETNX argument table */
7066struct redisCommandArg SETNX_Args[] = {
7067{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
7068{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
7069{0}
7070};
7071
7072/********** SETRANGE ********************/
7073
7074/* SETRANGE history */
7075#define SETRANGE_History NULL
7076
7077/* SETRANGE tips */
7078#define SETRANGE_tips NULL
7079
7080/* SETRANGE argument table */
7081struct redisCommandArg SETRANGE_Args[] = {
7082{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
7083{"offset",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
7084{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE},
7085{0}
7086};
7087
7088/********** STRLEN ********************/
7089
7090/* STRLEN history */
7091#define STRLEN_History NULL
7092
7093/* STRLEN tips */
7094#define STRLEN_tips NULL
7095
7096/* STRLEN argument table */
7097struct redisCommandArg STRLEN_Args[] = {
7098{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
7099{0}
7100};
7101
7102/********** SUBSTR ********************/
7103
7104/* SUBSTR history */
7105#define SUBSTR_History NULL
7106
7107/* SUBSTR tips */
7108#define SUBSTR_tips NULL
7109
7110/* SUBSTR argument table */
7111struct redisCommandArg SUBSTR_Args[] = {
7112{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE},
7113{"start",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
7114{"end",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE},
7115{0}
7116};
7117
7118/********** DISCARD ********************/
7119
7120/* DISCARD history */
7121#define DISCARD_History NULL
7122
7123/* DISCARD tips */
7124#define DISCARD_tips NULL
7125
7126/********** EXEC ********************/
7127
7128/* EXEC history */
7129#define EXEC_History NULL
7130
7131/* EXEC tips */
7132#define EXEC_tips NULL
7133
7134/********** MULTI ********************/
7135
7136/* MULTI history */
7137#define MULTI_History NULL
7138
7139/* MULTI tips */
7140#define MULTI_tips NULL
7141
7142/********** UNWATCH ********************/
7143
7144/* UNWATCH history */
7145#define UNWATCH_History NULL
7146
7147/* UNWATCH tips */
7148#define UNWATCH_tips NULL
7149
7150/********** WATCH ********************/
7151
7152/* WATCH history */
7153#define WATCH_History NULL
7154
7155/* WATCH tips */
7156#define WATCH_tips NULL
7157
7158/* WATCH argument table */
7159struct redisCommandArg WATCH_Args[] = {
7160{"key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_MULTIPLE},
7161{0}
7162};
7163
7164/* Main command table */
7165struct redisCommand redisCommandTable[] = {
7166/* bitmap */
7167{"bitcount","Count set bits in a string","O(N)","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_BITMAP,BITCOUNT_History,BITCOUNT_tips,bitcountCommand,-2,CMD_READONLY,ACL_CATEGORY_BITMAP,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=BITCOUNT_Args},
7168{"bitfield","Perform arbitrary bitfield integer operations on strings","O(1) for each subcommand specified","3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_BITMAP,BITFIELD_History,BITFIELD_tips,bitfieldCommand,-2,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_BITMAP,{{"This command allows both access and modification of the key",CMD_KEY_RW|CMD_KEY_UPDATE|CMD_KEY_ACCESS|CMD_KEY_VARIABLE_FLAGS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},bitfieldGetKeys,.args=BITFIELD_Args},
7169{"bitfield_ro","Perform arbitrary bitfield integer operations on strings. Read-only variant of BITFIELD","O(1) for each subcommand specified","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_BITMAP,BITFIELD_RO_History,BITFIELD_RO_tips,bitfieldroCommand,-2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_BITMAP,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=BITFIELD_RO_Args},
7170{"bitop","Perform bitwise operations between strings","O(N)","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_BITMAP,BITOP_History,BITOP_tips,bitopCommand,-4,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_BITMAP,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={3},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=BITOP_Args},
7171{"bitpos","Find first bit set or clear in a string","O(N)","2.8.7",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_BITMAP,BITPOS_History,BITPOS_tips,bitposCommand,-3,CMD_READONLY,ACL_CATEGORY_BITMAP,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=BITPOS_Args},
7172{"getbit","Returns the bit value at offset in the string value stored at key","O(1)","2.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_BITMAP,GETBIT_History,GETBIT_tips,getbitCommand,3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_BITMAP,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GETBIT_Args},
7173{"setbit","Sets or clears the bit at offset in the string value stored at key","O(1)","2.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_BITMAP,SETBIT_History,SETBIT_tips,setbitCommand,4,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_BITMAP,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SETBIT_Args},
7174/* cluster */
7175{"asking","Sent by cluster clients after an -ASK redirect","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,ASKING_History,ASKING_tips,askingCommand,1,CMD_FAST,ACL_CATEGORY_CONNECTION},
7176{"cluster","A container for cluster commands","Depends on subcommand.","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,CLUSTER_History,CLUSTER_tips,NULL,-2,0,0,.subcommands=CLUSTER_Subcommands},
7177{"readonly","Enables read queries for a connection to a cluster replica node","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,READONLY_History,READONLY_tips,readonlyCommand,1,CMD_FAST|CMD_LOADING|CMD_STALE,ACL_CATEGORY_CONNECTION},
7178{"readwrite","Disables read queries for a connection to a cluster replica node","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CLUSTER,READWRITE_History,READWRITE_tips,readwriteCommand,1,CMD_FAST|CMD_LOADING|CMD_STALE,ACL_CATEGORY_CONNECTION},
7179/* connection */
7180{"auth","Authenticate to the server","O(N) where N is the number of passwords defined for the user","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,AUTH_History,AUTH_tips,authCommand,-2,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_NO_AUTH|CMD_SENTINEL|CMD_ALLOW_BUSY,ACL_CATEGORY_CONNECTION,.args=AUTH_Args},
7181{"client","A container for client connection commands","Depends on subcommand.","2.4.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,CLIENT_History,CLIENT_tips,NULL,-2,CMD_SENTINEL,0,.subcommands=CLIENT_Subcommands},
7182{"echo","Echo the given string","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,ECHO_History,ECHO_tips,echoCommand,2,CMD_LOADING|CMD_STALE|CMD_FAST,ACL_CATEGORY_CONNECTION,.args=ECHO_Args},
7183{"hello","Handshake with Redis","O(1)","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,HELLO_History,HELLO_tips,helloCommand,-1,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_NO_AUTH|CMD_SENTINEL|CMD_ALLOW_BUSY,ACL_CATEGORY_CONNECTION,.args=HELLO_Args},
7184{"ping","Ping the server","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,PING_History,PING_tips,pingCommand,-1,CMD_FAST|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.args=PING_Args},
7185{"quit","Close the connection","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,QUIT_History,QUIT_tips,quitCommand,-1,CMD_ALLOW_BUSY|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_NO_AUTH,ACL_CATEGORY_CONNECTION},
7186{"reset","Reset the connection","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,RESET_History,RESET_tips,resetCommand,1,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_NO_AUTH|CMD_ALLOW_BUSY,ACL_CATEGORY_CONNECTION},
7187{"select","Change the selected database for the current connection","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_CONNECTION,SELECT_History,SELECT_tips,selectCommand,2,CMD_LOADING|CMD_STALE|CMD_FAST,ACL_CATEGORY_CONNECTION,.args=SELECT_Args},
7188/* generic */
7189{"copy","Copy a key","O(N) worst case for collections, where N is the number of nested items. O(1) for string values.","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,COPY_History,COPY_tips,copyCommand,-3,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=COPY_Args},
7190{"del","Delete a key","O(N) where N is the number of keys that will be removed. When a key to remove holds a value other than a string, the individual complexity for this key is O(M) where M is the number of elements in the list, set, sorted set or hash. Removing a single key that holds a string value is O(1).","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,DEL_History,DEL_tips,delCommand,-2,CMD_WRITE,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RM|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=DEL_Args},
7191{"dump","Return a serialized version of the value stored at the specified key.","O(1) to access the key and additional O(N*M) to serialize it, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1).","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,DUMP_History,DUMP_tips,dumpCommand,2,CMD_READONLY,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=DUMP_Args},
7192{"exists","Determine if a key exists","O(N) where N is the number of keys to check.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,EXISTS_History,EXISTS_tips,existsCommand,-2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=EXISTS_Args},
7193{"expire","Set a key's time to live in seconds","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,EXPIRE_History,EXPIRE_tips,expireCommand,-3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=EXPIRE_Args},
7194{"expireat","Set the expiration for a key as a UNIX timestamp","O(1)","1.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,EXPIREAT_History,EXPIREAT_tips,expireatCommand,-3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=EXPIREAT_Args},
7195{"expiretime","Get the expiration Unix timestamp for a key","O(1)","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,EXPIRETIME_History,EXPIRETIME_tips,expiretimeCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=EXPIRETIME_Args},
7196{"keys","Find all keys matching the given pattern","O(N) with N being the number of keys in the database, under the assumption that the key names in the database and the given pattern have limited length.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,KEYS_History,KEYS_tips,keysCommand,2,CMD_READONLY,ACL_CATEGORY_KEYSPACE|ACL_CATEGORY_DANGEROUS,.args=KEYS_Args},
7197{"migrate","Atomically transfer a key from a Redis instance to another one.","This command actually executes a DUMP+DEL in the source instance, and a RESTORE in the target instance. See the pages of these commands for time complexity. Also an O(N) data transfer between the two instances is performed.","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,MIGRATE_History,MIGRATE_tips,migrateCommand,-6,CMD_WRITE,ACL_CATEGORY_KEYSPACE|ACL_CATEGORY_DANGEROUS,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={3},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE|CMD_KEY_INCOMPLETE,KSPEC_BS_KEYWORD,.bs.keyword={"KEYS",-2},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},migrateGetKeys,.args=MIGRATE_Args},
7198{"move","Move a key to another database","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,MOVE_History,MOVE_tips,moveCommand,3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=MOVE_Args},
7199{"object","A container for object introspection commands","Depends on subcommand.","2.2.3",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,OBJECT_History,OBJECT_tips,NULL,-2,0,0,.subcommands=OBJECT_Subcommands},
7200{"persist","Remove the expiration from a key","O(1)","2.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,PERSIST_History,PERSIST_tips,persistCommand,2,CMD_WRITE|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=PERSIST_Args},
7201{"pexpire","Set a key's time to live in milliseconds","O(1)","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,PEXPIRE_History,PEXPIRE_tips,pexpireCommand,-3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=PEXPIRE_Args},
7202{"pexpireat","Set the expiration for a key as a UNIX timestamp specified in milliseconds","O(1)","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,PEXPIREAT_History,PEXPIREAT_tips,pexpireatCommand,-3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=PEXPIREAT_Args},
7203{"pexpiretime","Get the expiration Unix timestamp for a key in milliseconds","O(1)","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,PEXPIRETIME_History,PEXPIRETIME_tips,pexpiretimeCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=PEXPIRETIME_Args},
7204{"pttl","Get the time to live for a key in milliseconds","O(1)","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,PTTL_History,PTTL_tips,pttlCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=PTTL_Args},
7205{"randomkey","Return a random key from the keyspace","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,RANDOMKEY_History,RANDOMKEY_tips,randomkeyCommand,1,CMD_READONLY,ACL_CATEGORY_KEYSPACE},
7206{"rename","Rename a key","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,RENAME_History,RENAME_tips,renameCommand,3,CMD_WRITE,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=RENAME_Args},
7207{"renamenx","Rename a key, only if the new key does not exist","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,RENAMENX_History,RENAMENX_tips,renamenxCommand,3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_OW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=RENAMENX_Args},
7208{"restore","Create a key using the provided serialized value, previously obtained using DUMP.","O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,RESTORE_History,RESTORE_tips,restoreCommand,-4,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_KEYSPACE|ACL_CATEGORY_DANGEROUS,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=RESTORE_Args},
7209{"scan","Incrementally iterate the keys space","O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.","2.8.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,SCAN_History,SCAN_tips,scanCommand,-2,CMD_READONLY,ACL_CATEGORY_KEYSPACE,.args=SCAN_Args},
7210{"sort","Sort the elements in a list, set or sorted set","O(N+M*log(M)) where N is the number of elements in the list or set to sort, and M the number of returned elements. When the elements are not sorted, complexity is O(N).","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,SORT_History,SORT_tips,sortCommand,-2,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_SET|ACL_CATEGORY_SORTEDSET|ACL_CATEGORY_LIST|ACL_CATEGORY_DANGEROUS,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{"For the optional BY/GET keyword. It is marked 'unknown' because the key names derive from the content of the key we sort",CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_UNKNOWN,{{0}},KSPEC_FK_UNKNOWN,{{0}}},{"For the optional STORE keyword. It is marked 'unknown' because the keyword can appear anywhere in the argument array",CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_UNKNOWN,{{0}},KSPEC_FK_UNKNOWN,{{0}}}},sortGetKeys,.args=SORT_Args},
7211{"sort_ro","Sort the elements in a list, set or sorted set. Read-only variant of SORT.","O(N+M*log(M)) where N is the number of elements in the list or set to sort, and M the number of returned elements. When the elements are not sorted, complexity is O(N).","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,SORT_RO_History,SORT_RO_tips,sortroCommand,-2,CMD_READONLY,ACL_CATEGORY_SET|ACL_CATEGORY_SORTEDSET|ACL_CATEGORY_LIST|ACL_CATEGORY_DANGEROUS,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{"For the optional BY/GET keyword. It is marked 'unknown' because the key names derive from the content of the key we sort",CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_UNKNOWN,{{0}},KSPEC_FK_UNKNOWN,{{0}}}},sortROGetKeys,.args=SORT_RO_Args},
7212{"touch","Alters the last access time of a key(s). Returns the number of existing keys specified.","O(N) where N is the number of keys that will be touched.","3.2.1",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,TOUCH_History,TOUCH_tips,touchCommand,-2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=TOUCH_Args},
7213{"ttl","Get the time to live for a key in seconds","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,TTL_History,TTL_tips,ttlCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=TTL_Args},
7214{"type","Determine the type stored at key","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,TYPE_History,TYPE_tips,typeCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=TYPE_Args},
7215{"unlink","Delete a key asynchronously in another thread. Otherwise it is just as DEL, but non blocking.","O(1) for each key removed regardless of its size. Then the command does O(N) work in a different thread in order to reclaim memory, where N is the number of allocations the deleted objects where composed of.","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,UNLINK_History,UNLINK_tips,unlinkCommand,-2,CMD_WRITE|CMD_FAST,ACL_CATEGORY_KEYSPACE,{{NULL,CMD_KEY_RM|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=UNLINK_Args},
7216{"wait","Wait for the synchronous replication of all the write commands sent in the context of the current connection","O(1)","3.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GENERIC,WAIT_History,WAIT_tips,waitCommand,3,CMD_NOSCRIPT,ACL_CATEGORY_CONNECTION,.args=WAIT_Args},
7217/* geo */
7218{"geoadd","Add one or more geospatial items in the geospatial index represented using a sorted set","O(log(N)) for each item added, where N is the number of elements in the sorted set.","3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GEO,GEOADD_History,GEOADD_tips,geoaddCommand,-5,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_GEO,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEOADD_Args},
7219{"geodist","Returns the distance between two members of a geospatial index","O(log(N))","3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GEO,GEODIST_History,GEODIST_tips,geodistCommand,-4,CMD_READONLY,ACL_CATEGORY_GEO,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEODIST_Args},
7220{"geohash","Returns members of a geospatial index as standard geohash strings","O(log(N)) for each member requested, where N is the number of elements in the sorted set.","3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GEO,GEOHASH_History,GEOHASH_tips,geohashCommand,-2,CMD_READONLY,ACL_CATEGORY_GEO,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEOHASH_Args},
7221{"geopos","Returns longitude and latitude of members of a geospatial index","O(N) where N is the number of members requested.","3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GEO,GEOPOS_History,GEOPOS_tips,geoposCommand,-2,CMD_READONLY,ACL_CATEGORY_GEO,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEOPOS_Args},
7222{"georadius","Query a sorted set representing a geospatial index to fetch members matching a given maximum distance from a point","O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.","3.2.0",CMD_DOC_DEPRECATED,"`GEOSEARCH` and `GEOSEARCHSTORE` with the `BYRADIUS` argument","6.2.0",COMMAND_GROUP_GEO,GEORADIUS_History,GEORADIUS_tips,georadiusCommand,-6,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_GEO,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_KEYWORD,.bs.keyword={"STORE",6},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_KEYWORD,.bs.keyword={"STOREDIST",6},KSPEC_FK_RANGE,.fk.range={0,1,0}}},georadiusGetKeys,.args=GEORADIUS_Args},
7223{"georadiusbymember","Query a sorted set representing a geospatial index to fetch members matching a given maximum distance from a member","O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.","3.2.0",CMD_DOC_DEPRECATED,"`GEOSEARCH` and `GEOSEARCHSTORE` with the `BYRADIUS` and `FROMMEMBER` arguments","6.2.0",COMMAND_GROUP_GEO,GEORADIUSBYMEMBER_History,GEORADIUSBYMEMBER_tips,georadiusbymemberCommand,-5,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_GEO,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_KEYWORD,.bs.keyword={"STORE",5},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_KEYWORD,.bs.keyword={"STOREDIST",5},KSPEC_FK_RANGE,.fk.range={0,1,0}}},georadiusGetKeys,.args=GEORADIUSBYMEMBER_Args},
7224{"georadiusbymember_ro","A read-only variant for GEORADIUSBYMEMBER","O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.","3.2.10",CMD_DOC_DEPRECATED,"`GEOSEARCH` with the `BYRADIUS` and `FROMMEMBER` arguments","6.2.0",COMMAND_GROUP_GEO,GEORADIUSBYMEMBER_RO_History,GEORADIUSBYMEMBER_RO_tips,georadiusbymemberroCommand,-5,CMD_READONLY,ACL_CATEGORY_GEO,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEORADIUSBYMEMBER_RO_Args},
7225{"georadius_ro","A read-only variant for GEORADIUS","O(N+log(M)) where N is the number of elements inside the bounding box of the circular area delimited by center and radius and M is the number of items inside the index.","3.2.10",CMD_DOC_DEPRECATED,"`GEOSEARCH` with the `BYRADIUS` argument","6.2.0",COMMAND_GROUP_GEO,GEORADIUS_RO_History,GEORADIUS_RO_tips,georadiusroCommand,-6,CMD_READONLY,ACL_CATEGORY_GEO,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEORADIUS_RO_Args},
7226{"geosearch","Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle.","O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GEO,GEOSEARCH_History,GEOSEARCH_tips,geosearchCommand,-7,CMD_READONLY,ACL_CATEGORY_GEO,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEOSEARCH_Args},
7227{"geosearchstore","Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle, and store the result in another key.","O(N+log(M)) where N is the number of elements in the grid-aligned bounding box area around the shape provided as the filter and M is the number of items inside the shape","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_GEO,GEOSEARCHSTORE_History,GEOSEARCHSTORE_tips,geosearchstoreCommand,-8,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_GEO,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GEOSEARCHSTORE_Args},
7228/* hash */
7229{"hdel","Delete one or more hash fields","O(N) where N is the number of fields to be removed.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HDEL_History,HDEL_tips,hdelCommand,-3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HDEL_Args},
7230{"hexists","Determine if a hash field exists","O(1)","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HEXISTS_History,HEXISTS_tips,hexistsCommand,3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HEXISTS_Args},
7231{"hget","Get the value of a hash field","O(1)","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HGET_History,HGET_tips,hgetCommand,3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HGET_Args},
7232{"hgetall","Get all the fields and values in a hash","O(N) where N is the size of the hash.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HGETALL_History,HGETALL_tips,hgetallCommand,2,CMD_READONLY,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HGETALL_Args},
7233{"hincrby","Increment the integer value of a hash field by the given number","O(1)","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HINCRBY_History,HINCRBY_tips,hincrbyCommand,4,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HINCRBY_Args},
7234{"hincrbyfloat","Increment the float value of a hash field by the given amount","O(1)","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HINCRBYFLOAT_History,HINCRBYFLOAT_tips,hincrbyfloatCommand,4,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HINCRBYFLOAT_Args},
7235{"hkeys","Get all the fields in a hash","O(N) where N is the size of the hash.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HKEYS_History,HKEYS_tips,hkeysCommand,2,CMD_READONLY,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HKEYS_Args},
7236{"hlen","Get the number of fields in a hash","O(1)","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HLEN_History,HLEN_tips,hlenCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HLEN_Args},
7237{"hmget","Get the values of all the given hash fields","O(N) where N is the number of fields being requested.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HMGET_History,HMGET_tips,hmgetCommand,-3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HMGET_Args},
7238{"hmset","Set multiple hash fields to multiple values","O(N) where N is the number of fields being set.","2.0.0",CMD_DOC_DEPRECATED,"`HSET` with multiple field-value pairs","4.0.0",COMMAND_GROUP_HASH,HMSET_History,HMSET_tips,hsetCommand,-4,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HMSET_Args},
7239{"hrandfield","Get one or multiple random fields from a hash","O(N) where N is the number of fields returned","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HRANDFIELD_History,HRANDFIELD_tips,hrandfieldCommand,-2,CMD_READONLY,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HRANDFIELD_Args},
7240{"hscan","Incrementally iterate hash fields and associated values","O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection..","2.8.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HSCAN_History,HSCAN_tips,hscanCommand,-3,CMD_READONLY,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HSCAN_Args},
7241{"hset","Set the string value of a hash field","O(1) for each field/value pair added, so O(N) to add N field/value pairs when the command is called with multiple field/value pairs.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HSET_History,HSET_tips,hsetCommand,-4,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HSET_Args},
7242{"hsetnx","Set the value of a hash field, only if the field does not exist","O(1)","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HSETNX_History,HSETNX_tips,hsetnxCommand,4,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HSETNX_Args},
7243{"hstrlen","Get the length of the value of a hash field","O(1)","3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HSTRLEN_History,HSTRLEN_tips,hstrlenCommand,3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HSTRLEN_Args},
7244{"hvals","Get all the values in a hash","O(N) where N is the size of the hash.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HASH,HVALS_History,HVALS_tips,hvalsCommand,2,CMD_READONLY,ACL_CATEGORY_HASH,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=HVALS_Args},
7245/* hyperloglog */
7246{"pfadd","Adds the specified elements to the specified HyperLogLog.","O(1) to add every element.","2.8.9",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HYPERLOGLOG,PFADD_History,PFADD_tips,pfaddCommand,-2,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_HYPERLOGLOG,{{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=PFADD_Args},
7247{"pfcount","Return the approximated cardinality of the set(s) observed by the HyperLogLog at key(s).","O(1) with a very small average constant time when called with a single key. O(N) with N being the number of keys, and much bigger constant times, when called with multiple keys.","2.8.9",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HYPERLOGLOG,PFCOUNT_History,PFCOUNT_tips,pfcountCommand,-2,CMD_READONLY|CMD_MAY_REPLICATE,ACL_CATEGORY_HYPERLOGLOG,{{"RW because it may change the internal representation of the key, and propagate to replicas",CMD_KEY_RW|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=PFCOUNT_Args},
7248{"pfdebug","Internal commands for debugging HyperLogLog values","N/A","2.8.9",CMD_DOC_SYSCMD,NULL,NULL,COMMAND_GROUP_HYPERLOGLOG,PFDEBUG_History,PFDEBUG_tips,pfdebugCommand,3,CMD_WRITE|CMD_DENYOOM|CMD_ADMIN,ACL_CATEGORY_HYPERLOGLOG,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=PFDEBUG_Args},
7249{"pfmerge","Merge N different HyperLogLogs into a single one.","O(N) to merge N HyperLogLogs, but with high constant times.","2.8.9",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_HYPERLOGLOG,PFMERGE_History,PFMERGE_tips,pfmergeCommand,-2,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_HYPERLOGLOG,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=PFMERGE_Args},
7250{"pfselftest","An internal command for testing HyperLogLog values","N/A","2.8.9",CMD_DOC_SYSCMD,NULL,NULL,COMMAND_GROUP_HYPERLOGLOG,PFSELFTEST_History,PFSELFTEST_tips,pfselftestCommand,1,CMD_ADMIN,ACL_CATEGORY_HYPERLOGLOG},
7251/* list */
7252{"blmove","Pop an element from a list, push it to another list and return it; or block until one is available","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,BLMOVE_History,BLMOVE_tips,blmoveCommand,6,CMD_WRITE|CMD_DENYOOM|CMD_NOSCRIPT|CMD_BLOCKING,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=BLMOVE_Args},
7253{"blmpop","Pop elements from a list, or block until one is available","O(N+M) where N is the number of provided keys and M is the number of elements returned.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,BLMPOP_History,BLMPOP_tips,blmpopCommand,-5,CMD_WRITE|CMD_BLOCKING,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},blmpopGetKeys,.args=BLMPOP_Args},
7254{"blpop","Remove and get the first element in a list, or block until one is available","O(N) where N is the number of provided keys.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,BLPOP_History,BLPOP_tips,blpopCommand,-3,CMD_WRITE|CMD_NOSCRIPT|CMD_BLOCKING,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-2,1,0}}},.args=BLPOP_Args},
7255{"brpop","Remove and get the last element in a list, or block until one is available","O(N) where N is the number of provided keys.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,BRPOP_History,BRPOP_tips,brpopCommand,-3,CMD_WRITE|CMD_NOSCRIPT|CMD_BLOCKING,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-2,1,0}}},.args=BRPOP_Args},
7256{"brpoplpush","Pop an element from a list, push it to another list and return it; or block until one is available","O(1)","2.2.0",CMD_DOC_DEPRECATED,"`BLMOVE` with the `RIGHT` and `LEFT` arguments","6.2.0",COMMAND_GROUP_LIST,BRPOPLPUSH_History,BRPOPLPUSH_tips,brpoplpushCommand,4,CMD_WRITE|CMD_DENYOOM|CMD_NOSCRIPT|CMD_BLOCKING,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=BRPOPLPUSH_Args},
7257{"lindex","Get an element from a list by its index","O(N) where N is the number of elements to traverse to get to the element at index. This makes asking for the first or the last element of the list O(1).","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LINDEX_History,LINDEX_tips,lindexCommand,3,CMD_READONLY,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LINDEX_Args},
7258{"linsert","Insert an element before or after another element in a list","O(N) where N is the number of elements to traverse before seeing the value pivot. This means that inserting somewhere on the left end on the list (head) can be considered O(1) and inserting somewhere on the right end (tail) is O(N).","2.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LINSERT_History,LINSERT_tips,linsertCommand,5,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LINSERT_Args},
7259{"llen","Get the length of a list","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LLEN_History,LLEN_tips,llenCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LLEN_Args},
7260{"lmove","Pop an element from a list, push it to another list and return it","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LMOVE_History,LMOVE_tips,lmoveCommand,5,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LMOVE_Args},
7261{"lmpop","Pop elements from a list","O(N+M) where N is the number of provided keys and M is the number of elements returned.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LMPOP_History,LMPOP_tips,lmpopCommand,-4,CMD_WRITE,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},lmpopGetKeys,.args=LMPOP_Args},
7262{"lpop","Remove and get the first elements in a list","O(N) where N is the number of elements returned","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LPOP_History,LPOP_tips,lpopCommand,-2,CMD_WRITE|CMD_FAST,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LPOP_Args},
7263{"lpos","Return the index of matching elements on a list","O(N) where N is the number of elements in the list, for the average case. When searching for elements near the head or the tail of the list, or when the MAXLEN option is provided, the command may run in constant time.","6.0.6",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LPOS_History,LPOS_tips,lposCommand,-3,CMD_READONLY,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LPOS_Args},
7264{"lpush","Prepend one or multiple elements to a list","O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LPUSH_History,LPUSH_tips,lpushCommand,-3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LPUSH_Args},
7265{"lpushx","Prepend an element to a list, only if the list exists","O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.","2.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LPUSHX_History,LPUSHX_tips,lpushxCommand,-3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LPUSHX_Args},
7266{"lrange","Get a range of elements from a list","O(S+N) where S is the distance of start offset from HEAD for small lists, from nearest end (HEAD or TAIL) for large lists; and N is the number of elements in the specified range.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LRANGE_History,LRANGE_tips,lrangeCommand,4,CMD_READONLY,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LRANGE_Args},
7267{"lrem","Remove elements from a list","O(N+M) where N is the length of the list and M is the number of elements removed.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LREM_History,LREM_tips,lremCommand,4,CMD_WRITE,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LREM_Args},
7268{"lset","Set the value of an element in a list by its index","O(N) where N is the length of the list. Setting either the first or the last element of the list is O(1).","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LSET_History,LSET_tips,lsetCommand,4,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LSET_Args},
7269{"ltrim","Trim a list to the specified range","O(N) where N is the number of elements to be removed by the operation.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,LTRIM_History,LTRIM_tips,ltrimCommand,4,CMD_WRITE,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=LTRIM_Args},
7270{"rpop","Remove and get the last elements in a list","O(N) where N is the number of elements returned","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,RPOP_History,RPOP_tips,rpopCommand,-2,CMD_WRITE|CMD_FAST,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=RPOP_Args},
7271{"rpoplpush","Remove the last element in a list, prepend it to another list and return it","O(1)","1.2.0",CMD_DOC_DEPRECATED,"`LMOVE` with the `RIGHT` and `LEFT` arguments","6.2.0",COMMAND_GROUP_LIST,RPOPLPUSH_History,RPOPLPUSH_tips,rpoplpushCommand,3,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=RPOPLPUSH_Args},
7272{"rpush","Append one or multiple elements to a list","O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,RPUSH_History,RPUSH_tips,rpushCommand,-3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=RPUSH_Args},
7273{"rpushx","Append an element to a list, only if the list exists","O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.","2.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_LIST,RPUSHX_History,RPUSHX_tips,rpushxCommand,-3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_LIST,{{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=RPUSHX_Args},
7274/* pubsub */
7275{"psubscribe","Listen for messages published to channels matching the given patterns","O(N) where N is the number of patterns the client is already subscribed to.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,PSUBSCRIBE_History,PSUBSCRIBE_tips,psubscribeCommand,-2,CMD_PUBSUB|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0,.args=PSUBSCRIBE_Args},
7276{"publish","Post a message to a channel","O(N+M) where N is the number of clients subscribed to the receiving channel and M is the total number of subscribed patterns (by any client).","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,PUBLISH_History,PUBLISH_tips,publishCommand,3,CMD_PUBSUB|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_MAY_REPLICATE|CMD_SENTINEL,0,.args=PUBLISH_Args},
7277{"pubsub","A container for Pub/Sub commands","Depends on subcommand.","2.8.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,PUBSUB_History,PUBSUB_tips,NULL,-2,0,0,.subcommands=PUBSUB_Subcommands},
7278{"punsubscribe","Stop listening for messages posted to channels matching the given patterns","O(N+M) where N is the number of patterns the client is already subscribed and M is the number of total patterns subscribed in the system (by any client).","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,PUNSUBSCRIBE_History,PUNSUBSCRIBE_tips,punsubscribeCommand,-1,CMD_PUBSUB|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0,.args=PUNSUBSCRIBE_Args},
7279{"spublish","Post a message to a shard channel","O(N) where N is the number of clients subscribed to the receiving shard channel.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,SPUBLISH_History,SPUBLISH_tips,spublishCommand,3,CMD_PUBSUB|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_MAY_REPLICATE,0,{{NULL,CMD_KEY_NOT_KEY,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SPUBLISH_Args},
7280{"ssubscribe","Listen for messages published to the given shard channels","O(N) where N is the number of shard channels to subscribe to.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,SSUBSCRIBE_History,SSUBSCRIBE_tips,ssubscribeCommand,-2,CMD_PUBSUB|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0,{{NULL,CMD_KEY_NOT_KEY,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=SSUBSCRIBE_Args},
7281{"subscribe","Listen for messages published to the given channels","O(N) where N is the number of channels to subscribe to.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,SUBSCRIBE_History,SUBSCRIBE_tips,subscribeCommand,-2,CMD_PUBSUB|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0,.args=SUBSCRIBE_Args},
7282{"sunsubscribe","Stop listening for messages posted to the given shard channels","O(N) where N is the number of clients already subscribed to a shard channel.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,SUNSUBSCRIBE_History,SUNSUBSCRIBE_tips,sunsubscribeCommand,-1,CMD_PUBSUB|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0,{{NULL,CMD_KEY_NOT_KEY,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=SUNSUBSCRIBE_Args},
7283{"unsubscribe","Stop listening for messages posted to the given channels","O(N) where N is the number of clients already subscribed to a channel.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_PUBSUB,UNSUBSCRIBE_History,UNSUBSCRIBE_tips,unsubscribeCommand,-1,CMD_PUBSUB|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SENTINEL,0,.args=UNSUBSCRIBE_Args},
7284/* scripting */
7285{"eval","Execute a Lua script server side","Depends on the script that is executed.","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,EVAL_History,EVAL_tips,evalCommand,-3,CMD_NOSCRIPT|CMD_SKIP_MONITOR|CMD_MAY_REPLICATE|CMD_NO_MANDATORY_KEYS|CMD_STALE,ACL_CATEGORY_SCRIPTING,{{"We cannot tell how the keys will be used so we assume the worst, RW and UPDATE",CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},evalGetKeys,.args=EVAL_Args},
7286{"evalsha","Execute a Lua script server side","Depends on the script that is executed.","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,EVALSHA_History,EVALSHA_tips,evalShaCommand,-3,CMD_NOSCRIPT|CMD_SKIP_MONITOR|CMD_MAY_REPLICATE|CMD_NO_MANDATORY_KEYS|CMD_STALE,ACL_CATEGORY_SCRIPTING,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},evalGetKeys,.args=EVALSHA_Args},
7287{"evalsha_ro","Execute a read-only Lua script server side","Depends on the script that is executed.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,EVALSHA_RO_History,EVALSHA_RO_tips,evalShaRoCommand,-3,CMD_NOSCRIPT|CMD_SKIP_MONITOR|CMD_NO_MANDATORY_KEYS|CMD_STALE|CMD_READONLY,ACL_CATEGORY_SCRIPTING,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},evalGetKeys,.args=EVALSHA_RO_Args},
7288{"eval_ro","Execute a read-only Lua script server side","Depends on the script that is executed.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,EVAL_RO_History,EVAL_RO_tips,evalRoCommand,-3,CMD_NOSCRIPT|CMD_SKIP_MONITOR|CMD_NO_MANDATORY_KEYS|CMD_STALE|CMD_READONLY,ACL_CATEGORY_SCRIPTING,{{"We cannot tell how the keys will be used so we assume the worst, RO and ACCESS",CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},evalGetKeys,.args=EVAL_RO_Args},
7289{"fcall","Invoke a function","Depends on the function that is executed.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FCALL_History,FCALL_tips,fcallCommand,-3,CMD_NOSCRIPT|CMD_SKIP_MONITOR|CMD_MAY_REPLICATE|CMD_NO_MANDATORY_KEYS|CMD_STALE,ACL_CATEGORY_SCRIPTING,{{"We cannot tell how the keys will be used so we assume the worst, RW and UPDATE",CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},functionGetKeys,.args=FCALL_Args},
7290{"fcall_ro","Invoke a read-only function","Depends on the function that is executed.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FCALL_RO_History,FCALL_RO_tips,fcallroCommand,-3,CMD_NOSCRIPT|CMD_SKIP_MONITOR|CMD_NO_MANDATORY_KEYS|CMD_STALE|CMD_READONLY,ACL_CATEGORY_SCRIPTING,{{"We cannot tell how the keys will be used so we assume the worst, RO and ACCESS",CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},functionGetKeys,.args=FCALL_RO_Args},
7291{"function","A container for function commands","Depends on subcommand.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,FUNCTION_History,FUNCTION_tips,NULL,-2,0,0,.subcommands=FUNCTION_Subcommands},
7292{"script","A container for Lua scripts management commands","Depends on subcommand.","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SCRIPTING,SCRIPT_History,SCRIPT_tips,NULL,-2,0,0,.subcommands=SCRIPT_Subcommands},
7293/* sentinel */
7294{"sentinel","A container for Sentinel commands","Depends on subcommand.","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_History,SENTINEL_tips,NULL,-2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.subcommands=SENTINEL_Subcommands},
7295/* server */
7296{"acl","A container for Access List Control commands ","Depends on subcommand.","6.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ACL_History,ACL_tips,NULL,-2,CMD_SENTINEL,0,.subcommands=ACL_Subcommands},
7297{"bgrewriteaof","Asynchronously rewrite the append-only file","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,BGREWRITEAOF_History,BGREWRITEAOF_tips,bgrewriteaofCommand,1,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT,0},
7298{"bgsave","Asynchronously save the dataset to disk","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,BGSAVE_History,BGSAVE_tips,bgsaveCommand,-1,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT,0,.args=BGSAVE_Args},
7299{"command","Get array of Redis command details","O(N) where N is the total number of Redis commands","2.8.13",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,COMMAND_History,COMMAND_tips,commandCommand,-1,CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_CONNECTION,.subcommands=COMMAND_Subcommands},
7300{"config","A container for server configuration commands","Depends on subcommand.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,CONFIG_History,CONFIG_tips,NULL,-2,0,0,.subcommands=CONFIG_Subcommands},
7301{"dbsize","Return the number of keys in the selected database","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,DBSIZE_History,DBSIZE_tips,dbsizeCommand,1,CMD_READONLY|CMD_FAST,ACL_CATEGORY_KEYSPACE},
7302{"debug","A container for debugging commands","Depends on subcommand.","1.0.0",CMD_DOC_SYSCMD,NULL,NULL,COMMAND_GROUP_SERVER,DEBUG_History,DEBUG_tips,debugCommand,-2,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_PROTECTED,0},
7303{"failover","Start a coordinated failover between this server and one of its replicas.","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,FAILOVER_History,FAILOVER_tips,failoverCommand,-1,CMD_ADMIN|CMD_NOSCRIPT|CMD_STALE,0,.args=FAILOVER_Args},
7304{"flushall","Remove all keys from all databases","O(N) where N is the total number of keys in all databases","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,FLUSHALL_History,FLUSHALL_tips,flushallCommand,-1,CMD_WRITE,ACL_CATEGORY_KEYSPACE|ACL_CATEGORY_DANGEROUS,.args=FLUSHALL_Args},
7305{"flushdb","Remove all keys from the current database","O(N) where N is the number of keys in the selected database","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,FLUSHDB_History,FLUSHDB_tips,flushdbCommand,-1,CMD_WRITE,ACL_CATEGORY_KEYSPACE|ACL_CATEGORY_DANGEROUS,.args=FLUSHDB_Args},
7306{"info","Get information and statistics about the server","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,INFO_History,INFO_tips,infoCommand,-1,CMD_LOADING|CMD_STALE|CMD_SENTINEL,ACL_CATEGORY_DANGEROUS,.args=INFO_Args},
7307{"lastsave","Get the UNIX time stamp of the last successful save to disk","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,LASTSAVE_History,LASTSAVE_tips,lastsaveCommand,1,CMD_LOADING|CMD_STALE|CMD_FAST,ACL_CATEGORY_ADMIN|ACL_CATEGORY_DANGEROUS},
7308{"latency","A container for latency diagnostics commands","Depends on subcommand.","2.8.13",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,LATENCY_History,LATENCY_tips,NULL,-2,0,0,.subcommands=LATENCY_Subcommands},
7309{"lolwut","Display some computer art and the Redis version",NULL,"5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,LOLWUT_History,LOLWUT_tips,lolwutCommand,-1,CMD_READONLY|CMD_FAST,0,.args=LOLWUT_Args},
7310{"memory","A container for memory diagnostics commands","Depends on subcommand.","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MEMORY_History,MEMORY_tips,NULL,-2,0,0,.subcommands=MEMORY_Subcommands},
7311{"module","A container for module commands","Depends on subcommand.","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MODULE_History,MODULE_tips,NULL,-2,0,0,.subcommands=MODULE_Subcommands},
7312{"monitor","Listen for all requests received by the server in real time",NULL,"1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,MONITOR_History,MONITOR_tips,monitorCommand,1,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE,0},
7313{"psync","Internal command used for replication",NULL,"2.8.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,PSYNC_History,PSYNC_tips,syncCommand,-3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NO_MULTI|CMD_NOSCRIPT,0,.args=PSYNC_Args},
7314{"replconf","An internal command for configuring the replication stream","O(1)","3.0.0",CMD_DOC_SYSCMD,NULL,NULL,COMMAND_GROUP_SERVER,REPLCONF_History,REPLCONF_tips,replconfCommand,-1,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_ALLOW_BUSY,0},
7315{"replicaof","Make the server a replica of another instance, or promote it as master.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,REPLICAOF_History,REPLICAOF_tips,replicaofCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT|CMD_STALE,0,.args=REPLICAOF_Args},
7316{"restore-asking","An internal command for migrating keys in a cluster","O(1) to create the new key and additional O(N*M) to reconstruct the serialized value, where N is the number of Redis objects composing the value and M their average size. For small string values the time complexity is thus O(1)+O(1*M) where M is small, so simply O(1). However for sorted set values the complexity is O(N*M*log(N)) because inserting values into sorted sets is O(log(N)).","3.0.0",CMD_DOC_SYSCMD,NULL,NULL,COMMAND_GROUP_SERVER,RESTORE_ASKING_History,RESTORE_ASKING_tips,restoreCommand,-4,CMD_WRITE|CMD_DENYOOM|CMD_ASKING,ACL_CATEGORY_KEYSPACE|ACL_CATEGORY_DANGEROUS,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=RESTORE_ASKING_Args},
7317{"role","Return the role of the instance in the context of replication","O(1)","2.8.12",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,ROLE_History,ROLE_tips,roleCommand,1,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_SENTINEL,ACL_CATEGORY_ADMIN|ACL_CATEGORY_DANGEROUS},
7318{"save","Synchronously save the dataset to disk","O(N) where N is the total number of keys in all databases","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,SAVE_History,SAVE_tips,saveCommand,1,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT|CMD_NO_MULTI,0},
7319{"shutdown","Synchronously save the dataset to disk and then shut down the server","O(N) when saving, where N is the total number of keys in all databases when saving data, otherwise O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,SHUTDOWN_History,SHUTDOWN_tips,shutdownCommand,-1,CMD_ADMIN|CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_NO_MULTI|CMD_SENTINEL|CMD_ALLOW_BUSY,0,.args=SHUTDOWN_Args},
7320{"slaveof","Make the server a replica of another instance, or promote it as master.","O(1)","1.0.0",CMD_DOC_DEPRECATED,"`REPLICAOF`","5.0.0",COMMAND_GROUP_SERVER,SLAVEOF_History,SLAVEOF_tips,replicaofCommand,3,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NOSCRIPT|CMD_STALE,0,.args=SLAVEOF_Args},
7321{"slowlog","A container for slow log commands","Depends on subcommand.","2.2.12",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,SLOWLOG_History,SLOWLOG_tips,NULL,-2,0,0,.subcommands=SLOWLOG_Subcommands},
7322{"swapdb","Swaps two Redis databases","O(N) where N is the count of clients watching or blocking on keys from both databases.","4.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,SWAPDB_History,SWAPDB_tips,swapdbCommand,3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_KEYSPACE|ACL_CATEGORY_DANGEROUS,.args=SWAPDB_Args},
7323{"sync","Internal command used for replication",NULL,"1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,SYNC_History,SYNC_tips,syncCommand,1,CMD_NO_ASYNC_LOADING|CMD_ADMIN|CMD_NO_MULTI|CMD_NOSCRIPT,0},
7324{"time","Return the current server time","O(1)","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SERVER,TIME_History,TIME_tips,timeCommand,1,CMD_LOADING|CMD_STALE|CMD_FAST,0},
7325/* set */
7326{"sadd","Add one or more members to a set","O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SADD_History,SADD_tips,saddCommand,-3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SADD_Args},
7327{"scard","Get the number of members in a set","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SCARD_History,SCARD_tips,scardCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SCARD_Args},
7328{"sdiff","Subtract multiple sets","O(N) where N is the total number of elements in all given sets.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SDIFF_History,SDIFF_tips,sdiffCommand,-2,CMD_READONLY,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=SDIFF_Args},
7329{"sdiffstore","Subtract multiple sets and store the resulting set in a key","O(N) where N is the total number of elements in all given sets.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SDIFFSTORE_History,SDIFFSTORE_tips,sdiffstoreCommand,-3,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_SET,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=SDIFFSTORE_Args},
7330{"sinter","Intersect multiple sets","O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SINTER_History,SINTER_tips,sinterCommand,-2,CMD_READONLY,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=SINTER_Args},
7331{"sintercard","Intersect multiple sets and return the cardinality of the result","O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SINTERCARD_History,SINTERCARD_tips,sinterCardCommand,-3,CMD_READONLY,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},sintercardGetKeys,.args=SINTERCARD_Args},
7332{"sinterstore","Intersect multiple sets and store the resulting set in a key","O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SINTERSTORE_History,SINTERSTORE_tips,sinterstoreCommand,-3,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=SINTERSTORE_Args},
7333{"sismember","Determine if a given value is a member of a set","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SISMEMBER_History,SISMEMBER_tips,sismemberCommand,3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SISMEMBER_Args},
7334{"smembers","Get all the members in a set","O(N) where N is the set cardinality.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SMEMBERS_History,SMEMBERS_tips,sinterCommand,2,CMD_READONLY,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SMEMBERS_Args},
7335{"smismember","Returns the membership associated with the given elements for a set","O(N) where N is the number of elements being checked for membership","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SMISMEMBER_History,SMISMEMBER_tips,smismemberCommand,-3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SMISMEMBER_Args},
7336{"smove","Move a member from one set to another","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SMOVE_History,SMOVE_tips,smoveCommand,4,CMD_WRITE|CMD_FAST,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SMOVE_Args},
7337{"spop","Remove and return one or multiple random members from a set","Without the count argument O(1), otherwise O(N) where N is the value of the passed count.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SPOP_History,SPOP_tips,spopCommand,-2,CMD_WRITE|CMD_FAST,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SPOP_Args},
7338{"srandmember","Get one or multiple random members from a set","Without the count argument O(1), otherwise O(N) where N is the absolute value of the passed count.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SRANDMEMBER_History,SRANDMEMBER_tips,srandmemberCommand,-2,CMD_READONLY,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SRANDMEMBER_Args},
7339{"srem","Remove one or more members from a set","O(N) where N is the number of members to be removed.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SREM_History,SREM_tips,sremCommand,-3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SREM_Args},
7340{"sscan","Incrementally iterate Set elements","O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection..","2.8.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SSCAN_History,SSCAN_tips,sscanCommand,-3,CMD_READONLY,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SSCAN_Args},
7341{"sunion","Add multiple sets","O(N) where N is the total number of elements in all given sets.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SUNION_History,SUNION_tips,sunionCommand,-2,CMD_READONLY,ACL_CATEGORY_SET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=SUNION_Args},
7342{"sunionstore","Add multiple sets and store the resulting set in a key","O(N) where N is the total number of elements in all given sets.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SET,SUNIONSTORE_History,SUNIONSTORE_tips,sunionstoreCommand,-3,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_SET,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=SUNIONSTORE_Args},
7343/* sorted_set */
7344{"bzmpop","Remove and return members with scores in a sorted set or block until one is available","O(K) + O(N*log(M)) where K is the number of provided keys, N being the number of elements in the sorted set, and M being the number of elements popped.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,BZMPOP_History,BZMPOP_tips,bzmpopCommand,-5,CMD_WRITE|CMD_BLOCKING,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},blmpopGetKeys,.args=BZMPOP_Args},
7345{"bzpopmax","Remove and return the member with the highest score from one or more sorted sets, or block until one is available","O(log(N)) with N being the number of elements in the sorted set.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,BZPOPMAX_History,BZPOPMAX_tips,bzpopmaxCommand,-3,CMD_WRITE|CMD_NOSCRIPT|CMD_FAST|CMD_BLOCKING,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-2,1,0}}},.args=BZPOPMAX_Args},
7346{"bzpopmin","Remove and return the member with the lowest score from one or more sorted sets, or block until one is available","O(log(N)) with N being the number of elements in the sorted set.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,BZPOPMIN_History,BZPOPMIN_tips,bzpopminCommand,-3,CMD_WRITE|CMD_NOSCRIPT|CMD_FAST|CMD_BLOCKING,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-2,1,0}}},.args=BZPOPMIN_Args},
7347{"zadd","Add one or more members to a sorted set, or update its score if it already exists","O(log(N)) for each item added, where N is the number of elements in the sorted set.","1.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZADD_History,ZADD_tips,zaddCommand,-4,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZADD_Args},
7348{"zcard","Get the number of members in a sorted set","O(1)","1.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZCARD_History,ZCARD_tips,zcardCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZCARD_Args},
7349{"zcount","Count the members in a sorted set with scores within the given values","O(log(N)) with N being the number of elements in the sorted set.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZCOUNT_History,ZCOUNT_tips,zcountCommand,4,CMD_READONLY|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZCOUNT_Args},
7350{"zdiff","Subtract multiple sorted sets","O(L + (N-K)log(N)) worst case where L is the total number of elements in all the sets, N is the size of the first set, and K is the size of the result set.","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZDIFF_History,ZDIFF_tips,zdiffCommand,-3,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},zunionInterDiffGetKeys,.args=ZDIFF_Args},
7351{"zdiffstore","Subtract multiple sorted sets and store the resulting sorted set in a new key","O(L + (N-K)log(N)) worst case where L is the total number of elements in all the sets, N is the size of the first set, and K is the size of the result set.","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZDIFFSTORE_History,ZDIFFSTORE_tips,zdiffstoreCommand,-4,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},zunionInterDiffStoreGetKeys,.args=ZDIFFSTORE_Args},
7352{"zincrby","Increment the score of a member in a sorted set","O(log(N)) where N is the number of elements in the sorted set.","1.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZINCRBY_History,ZINCRBY_tips,zincrbyCommand,4,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZINCRBY_Args},
7353{"zinter","Intersect multiple sorted sets","O(N*K)+O(M*log(M)) worst case with N being the smallest input sorted set, K being the number of input sorted sets and M being the number of elements in the resulting sorted set.","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZINTER_History,ZINTER_tips,zinterCommand,-3,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},zunionInterDiffGetKeys,.args=ZINTER_Args},
7354{"zintercard","Intersect multiple sorted sets and return the cardinality of the result","O(N*K) worst case with N being the smallest input sorted set, K being the number of input sorted sets.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZINTERCARD_History,ZINTERCARD_tips,zinterCardCommand,-3,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},zunionInterDiffGetKeys,.args=ZINTERCARD_Args},
7355{"zinterstore","Intersect multiple sorted sets and store the resulting sorted set in a new key","O(N*K)+O(M*log(M)) worst case with N being the smallest input sorted set, K being the number of input sorted sets and M being the number of elements in the resulting sorted set.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZINTERSTORE_History,ZINTERSTORE_tips,zinterstoreCommand,-4,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},zunionInterDiffStoreGetKeys,.args=ZINTERSTORE_Args},
7356{"zlexcount","Count the number of members in a sorted set between a given lexicographical range","O(log(N)) with N being the number of elements in the sorted set.","2.8.9",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZLEXCOUNT_History,ZLEXCOUNT_tips,zlexcountCommand,4,CMD_READONLY|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZLEXCOUNT_Args},
7357{"zmpop","Remove and return members with scores in a sorted set","O(K) + O(N*log(M)) where K is the number of provided keys, N being the number of elements in the sorted set, and M being the number of elements popped.","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZMPOP_History,ZMPOP_tips,zmpopCommand,-4,CMD_WRITE,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},zmpopGetKeys,.args=ZMPOP_Args},
7358{"zmscore","Get the score associated with the given members in a sorted set","O(N) where N is the number of members being requested.","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZMSCORE_History,ZMSCORE_tips,zmscoreCommand,-3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZMSCORE_Args},
7359{"zpopmax","Remove and return members with the highest scores in a sorted set","O(log(N)*M) with N being the number of elements in the sorted set, and M being the number of elements popped.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZPOPMAX_History,ZPOPMAX_tips,zpopmaxCommand,-2,CMD_WRITE|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZPOPMAX_Args},
7360{"zpopmin","Remove and return members with the lowest scores in a sorted set","O(log(N)*M) with N being the number of elements in the sorted set, and M being the number of elements popped.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZPOPMIN_History,ZPOPMIN_tips,zpopminCommand,-2,CMD_WRITE|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZPOPMIN_Args},
7361{"zrandmember","Get one or multiple random elements from a sorted set","O(N) where N is the number of elements returned","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZRANDMEMBER_History,ZRANDMEMBER_tips,zrandmemberCommand,-2,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZRANDMEMBER_Args},
7362{"zrange","Return a range of members in a sorted set","O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements returned.","1.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZRANGE_History,ZRANGE_tips,zrangeCommand,-4,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZRANGE_Args},
7363{"zrangebylex","Return a range of members in a sorted set, by lexicographical range","O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).","2.8.9",CMD_DOC_DEPRECATED,"`ZRANGE` with the `BYLEX` argument","6.2.0",COMMAND_GROUP_SORTED_SET,ZRANGEBYLEX_History,ZRANGEBYLEX_tips,zrangebylexCommand,-4,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZRANGEBYLEX_Args},
7364{"zrangebyscore","Return a range of members in a sorted set, by score","O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).","1.0.5",CMD_DOC_DEPRECATED,"`ZRANGE` with the `BYSCORE` argument","6.2.0",COMMAND_GROUP_SORTED_SET,ZRANGEBYSCORE_History,ZRANGEBYSCORE_tips,zrangebyscoreCommand,-4,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZRANGEBYSCORE_Args},
7365{"zrangestore","Store a range of members from sorted set into another key","O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements stored into the destination key.","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZRANGESTORE_History,ZRANGESTORE_tips,zrangestoreCommand,-5,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZRANGESTORE_Args},
7366{"zrank","Determine the index of a member in a sorted set","O(log(N))","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZRANK_History,ZRANK_tips,zrankCommand,3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZRANK_Args},
7367{"zrem","Remove one or more members from a sorted set","O(M*log(N)) with N being the number of elements in the sorted set and M the number of elements to be removed.","1.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZREM_History,ZREM_tips,zremCommand,-3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZREM_Args},
7368{"zremrangebylex","Remove all members in a sorted set between the given lexicographical range","O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.","2.8.9",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZREMRANGEBYLEX_History,ZREMRANGEBYLEX_tips,zremrangebylexCommand,4,CMD_WRITE,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZREMRANGEBYLEX_Args},
7369{"zremrangebyrank","Remove all members in a sorted set within the given indexes","O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZREMRANGEBYRANK_History,ZREMRANGEBYRANK_tips,zremrangebyrankCommand,4,CMD_WRITE,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZREMRANGEBYRANK_Args},
7370{"zremrangebyscore","Remove all members in a sorted set within the given scores","O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements removed by the operation.","1.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZREMRANGEBYSCORE_History,ZREMRANGEBYSCORE_tips,zremrangebyscoreCommand,4,CMD_WRITE,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZREMRANGEBYSCORE_Args},
7371{"zrevrange","Return a range of members in a sorted set, by index, with scores ordered from high to low","O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements returned.","1.2.0",CMD_DOC_DEPRECATED,"`ZRANGE` with the `REV` argument","6.2.0",COMMAND_GROUP_SORTED_SET,ZREVRANGE_History,ZREVRANGE_tips,zrevrangeCommand,-4,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZREVRANGE_Args},
7372{"zrevrangebylex","Return a range of members in a sorted set, by lexicographical range, ordered from higher to lower strings.","O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).","2.8.9",CMD_DOC_DEPRECATED,"`ZRANGE` with the `REV` and `BYLEX` arguments","6.2.0",COMMAND_GROUP_SORTED_SET,ZREVRANGEBYLEX_History,ZREVRANGEBYLEX_tips,zrevrangebylexCommand,-4,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZREVRANGEBYLEX_Args},
7373{"zrevrangebyscore","Return a range of members in a sorted set, by score, with scores ordered from high to low","O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).","2.2.0",CMD_DOC_DEPRECATED,"`ZRANGE` with the `REV` and `BYSCORE` arguments","6.2.0",COMMAND_GROUP_SORTED_SET,ZREVRANGEBYSCORE_History,ZREVRANGEBYSCORE_tips,zrevrangebyscoreCommand,-4,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZREVRANGEBYSCORE_Args},
7374{"zrevrank","Determine the index of a member in a sorted set, with scores ordered from high to low","O(log(N))","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZREVRANK_History,ZREVRANK_tips,zrevrankCommand,3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZREVRANK_Args},
7375{"zscan","Incrementally iterate sorted sets elements and associated scores","O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection..","2.8.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZSCAN_History,ZSCAN_tips,zscanCommand,-3,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZSCAN_Args},
7376{"zscore","Get the score associated with the given member in a sorted set","O(1)","1.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZSCORE_History,ZSCORE_tips,zscoreCommand,3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=ZSCORE_Args},
7377{"zunion","Add multiple sorted sets","O(N)+O(M*log(M)) with N being the sum of the sizes of the input sorted sets, and M being the number of elements in the resulting sorted set.","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZUNION_History,ZUNION_tips,zunionCommand,-3,CMD_READONLY,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},zunionInterDiffGetKeys,.args=ZUNION_Args},
7378{"zunionstore","Add multiple sorted sets and store the resulting sorted set in a new key","O(N)+O(M log(M)) with N being the sum of the sizes of the input sorted sets, and M being the number of elements in the resulting sorted set.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SORTED_SET,ZUNIONSTORE_History,ZUNIONSTORE_tips,zunionstoreCommand,-4,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_SORTEDSET,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}},{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_KEYNUM,.fk.keynum={0,1,1}}},zunionInterDiffStoreGetKeys,.args=ZUNIONSTORE_Args},
7379/* stream */
7380{"xack","Marks a pending message as correctly processed, effectively removing it from the pending entries list of the consumer group. Return value of the command is the number of messages successfully acknowledged, that is, the IDs we were actually able to resolve in the PEL.","O(1) for each message ID processed.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XACK_History,XACK_tips,xackCommand,-4,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XACK_Args},
7381{"xadd","Appends a new entry to a stream","O(1) when adding a new entry, O(N) when trimming where N being the number of entries evicted.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XADD_History,XADD_tips,xaddCommand,-5,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STREAM,{{"UPDATE instead of INSERT because of the optional trimming feature",CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XADD_Args},
7382{"xautoclaim","Changes (or acquires) ownership of messages in a consumer group, as if the messages were delivered to the specified consumer.","O(1) if COUNT is small.","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XAUTOCLAIM_History,XAUTOCLAIM_tips,xautoclaimCommand,-6,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XAUTOCLAIM_Args},
7383{"xclaim","Changes (or acquires) ownership of a message in a consumer group, as if the message was delivered to the specified consumer.","O(log N) with N being the number of messages in the PEL of the consumer group.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XCLAIM_History,XCLAIM_tips,xclaimCommand,-6,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XCLAIM_Args},
7384{"xdel","Removes the specified entries from the stream. Returns the number of items actually deleted, that may be different from the number of IDs passed in case certain IDs do not exist.","O(1) for each single item to delete in the stream, regardless of the stream size.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XDEL_History,XDEL_tips,xdelCommand,-3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XDEL_Args},
7385{"xgroup","A container for consumer groups commands","Depends on subcommand.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XGROUP_History,XGROUP_tips,NULL,-2,0,0,.subcommands=XGROUP_Subcommands},
7386{"xinfo","A container for stream introspection commands","Depends on subcommand.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XINFO_History,XINFO_tips,NULL,-2,0,0,.subcommands=XINFO_Subcommands},
7387{"xlen","Return the number of entries in a stream","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XLEN_History,XLEN_tips,xlenCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XLEN_Args},
7388{"xpending","Return information and entries from a stream consumer group pending entries list, that are messages fetched but never acknowledged.","O(N) with N being the number of elements returned, so asking for a small fixed number of entries per call is O(1). O(M), where M is the total number of entries scanned when used with the IDLE filter. When the command returns just the summary and the list of consumers is small, it runs in O(1) time; otherwise, an additional O(N) time for iterating every consumer.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XPENDING_History,XPENDING_tips,xpendingCommand,-3,CMD_READONLY,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XPENDING_Args},
7389{"xrange","Return a range of elements in a stream, with IDs matching the specified IDs interval","O(N) with N being the number of elements being returned. If N is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1).","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XRANGE_History,XRANGE_tips,xrangeCommand,-4,CMD_READONLY,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XRANGE_Args},
7390{"xread","Return never seen elements in multiple streams, with IDs greater than the ones reported by the caller for each stream. Can block.","For each stream mentioned: O(N) with N being the number of elements being returned, it means that XREAD-ing with a fixed COUNT is O(1). Note that when the BLOCK option is used, XADD will pay O(M) time in order to serve the M clients blocked on the stream getting new data.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XREAD_History,XREAD_tips,xreadCommand,-4,CMD_BLOCKING|CMD_READONLY|CMD_BLOCKING,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_KEYWORD,.bs.keyword={"STREAMS",1},KSPEC_FK_RANGE,.fk.range={-1,1,2}}},xreadGetKeys,.args=XREAD_Args},
7391{"xreadgroup","Return new entries from a stream using a consumer group, or access the history of the pending entries for a given consumer. Can block.","For each stream mentioned: O(M) with M being the number of elements returned. If M is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1). On the other side when XREADGROUP blocks, XADD will pay the O(N) time in order to serve the N clients blocked on the stream getting new data.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XREADGROUP_History,XREADGROUP_tips,xreadCommand,-7,CMD_BLOCKING|CMD_WRITE,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_KEYWORD,.bs.keyword={"STREAMS",4},KSPEC_FK_RANGE,.fk.range={-1,1,2}}},xreadGetKeys,.args=XREADGROUP_Args},
7392{"xrevrange","Return a range of elements in a stream, with IDs matching the specified IDs interval, in reverse order (from greater to smaller IDs) compared to XRANGE","O(N) with N being the number of elements returned. If N is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1).","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XREVRANGE_History,XREVRANGE_tips,xrevrangeCommand,-4,CMD_READONLY,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XREVRANGE_Args},
7393{"xsetid","An internal command for replicating stream values","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XSETID_History,XSETID_tips,xsetidCommand,-3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XSETID_Args},
7394{"xtrim","Trims the stream to (approximately if '~' is passed) a certain size","O(N), with N being the number of evicted entries. Constant times are very small however, since entries are organized in macro nodes containing multiple entries that can be released with a single deallocation.","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STREAM,XTRIM_History,XTRIM_tips,xtrimCommand,-4,CMD_WRITE,ACL_CATEGORY_STREAM,{{NULL,CMD_KEY_RW|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=XTRIM_Args},
7395/* string */
7396{"append","Append a value to a key","O(1). The amortized time complexity is O(1) assuming the appended value is small and the already present value is of any size, since the dynamic string library used by Redis will double the free space available on every reallocation.","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,APPEND_History,APPEND_tips,appendCommand,3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=APPEND_Args},
7397{"decr","Decrement the integer value of a key by one","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,DECR_History,DECR_tips,decrCommand,2,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=DECR_Args},
7398{"decrby","Decrement the integer value of a key by the given number","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,DECRBY_History,DECRBY_tips,decrbyCommand,3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=DECRBY_Args},
7399{"get","Get the value of a key","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,GET_History,GET_tips,getCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GET_Args},
7400{"getdel","Get the value of a key and delete the key","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,GETDEL_History,GETDEL_tips,getdelCommand,2,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_DELETE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GETDEL_Args},
7401{"getex","Get the value of a key and optionally set its expiration","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,GETEX_History,GETEX_tips,getexCommand,-2,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STRING,{{"RW and UPDATE because it changes the TTL",CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GETEX_Args},
7402{"getrange","Get a substring of the string stored at a key","O(N) where N is the length of the returned string. The complexity is ultimately determined by the returned length, but because creating a substring from an existing string is very cheap, it can be considered O(1) for small strings.","2.4.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,GETRANGE_History,GETRANGE_tips,getrangeCommand,4,CMD_READONLY,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GETRANGE_Args},
7403{"getset","Set the string value of a key and return its old value","O(1)","1.0.0",CMD_DOC_DEPRECATED,"`SET` with the `!GET` argument","6.2.0",COMMAND_GROUP_STRING,GETSET_History,GETSET_tips,getsetCommand,3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=GETSET_Args},
7404{"incr","Increment the integer value of a key by one","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,INCR_History,INCR_tips,incrCommand,2,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=INCR_Args},
7405{"incrby","Increment the integer value of a key by the given amount","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,INCRBY_History,INCRBY_tips,incrbyCommand,3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=INCRBY_Args},
7406{"incrbyfloat","Increment the float value of a key by the given amount","O(1)","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,INCRBYFLOAT_History,INCRBYFLOAT_tips,incrbyfloatCommand,3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=INCRBYFLOAT_Args},
7407{"lcs","Find longest common substring","O(N*M) where N and M are the lengths of s1 and s2, respectively","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,LCS_History,LCS_tips,lcsCommand,-3,CMD_READONLY,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={1,1,0}}},.args=LCS_Args},
7408{"mget","Get the values of all the given keys","O(N) where N is the number of keys to retrieve.","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,MGET_History,MGET_tips,mgetCommand,-2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=MGET_Args},
7409{"mset","Set multiple keys to multiple values","O(N) where N is the number of keys to set.","1.0.1",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,MSET_History,MSET_tips,msetCommand,-3,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,2,0}}},.args=MSET_Args},
7410{"msetnx","Set multiple keys to multiple values, only if none of the keys exist","O(N) where N is the number of keys to set.","1.0.1",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,MSETNX_History,MSETNX_tips,msetnxCommand,-3,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_OW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,2,0}}},.args=MSETNX_Args},
7411{"psetex","Set the value and expiration in milliseconds of a key","O(1)","2.6.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,PSETEX_History,PSETEX_tips,psetexCommand,4,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=PSETEX_Args},
7412{"set","Set the string value of a key","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,SET_History,SET_tips,setCommand,-3,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_STRING,{{"RW and ACCESS due to the optional `GET` argument",CMD_KEY_RW|CMD_KEY_ACCESS|CMD_KEY_UPDATE|CMD_KEY_VARIABLE_FLAGS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},setGetKeys,.args=SET_Args},
7413{"setex","Set the value and expiration of a key","O(1)","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,SETEX_History,SETEX_tips,setexCommand,4,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_OW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SETEX_Args},
7414{"setnx","Set the value of a key, only if the key does not exist","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,SETNX_History,SETNX_tips,setnxCommand,3,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_OW|CMD_KEY_INSERT,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SETNX_Args},
7415{"setrange","Overwrite part of a string at key starting at the specified offset","O(1), not counting the time taken to copy the new string in place. Usually, this string is very small so the amortized complexity is O(1). Otherwise, complexity is O(M) with M being the length of the value argument.","2.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,SETRANGE_History,SETRANGE_tips,setrangeCommand,4,CMD_WRITE|CMD_DENYOOM,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SETRANGE_Args},
7416{"strlen","Get the length of the value stored in a key","O(1)","2.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_STRING,STRLEN_History,STRLEN_tips,strlenCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=STRLEN_Args},
7417{"substr","Get a substring of the string stored at a key","O(N) where N is the length of the returned string. The complexity is ultimately determined by the returned length, but because creating a substring from an existing string is very cheap, it can be considered O(1) for small strings.","1.0.0",CMD_DOC_DEPRECATED,"`GETRANGE`","2.0.0",COMMAND_GROUP_STRING,SUBSTR_History,SUBSTR_tips,getrangeCommand,4,CMD_READONLY,ACL_CATEGORY_STRING,{{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={0,1,0}}},.args=SUBSTR_Args},
7418/* transactions */
7419{"discard","Discard all commands issued after MULTI","O(N), when N is the number of queued commands","2.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_TRANSACTIONS,DISCARD_History,DISCARD_tips,discardCommand,1,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_ALLOW_BUSY,ACL_CATEGORY_TRANSACTION},
7420{"exec","Execute all commands issued after MULTI","Depends on commands in the transaction","1.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_TRANSACTIONS,EXEC_History,EXEC_tips,execCommand,1,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_SKIP_SLOWLOG,ACL_CATEGORY_TRANSACTION},
7421{"multi","Mark the start of a transaction block","O(1)","1.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_TRANSACTIONS,MULTI_History,MULTI_tips,multiCommand,1,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_ALLOW_BUSY,ACL_CATEGORY_TRANSACTION},
7422{"unwatch","Forget about all watched keys","O(1)","2.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_TRANSACTIONS,UNWATCH_History,UNWATCH_tips,unwatchCommand,1,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_ALLOW_BUSY,ACL_CATEGORY_TRANSACTION},
7423{"watch","Watch the given keys to determine execution of the MULTI/EXEC block","O(1) for every key.","2.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_TRANSACTIONS,WATCH_History,WATCH_tips,watchCommand,-2,CMD_NOSCRIPT|CMD_LOADING|CMD_STALE|CMD_FAST|CMD_ALLOW_BUSY,ACL_CATEGORY_TRANSACTION,{{NULL,CMD_KEY_RO,KSPEC_BS_INDEX,.bs.index={1},KSPEC_FK_RANGE,.fk.range={-1,1,0}}},.args=WATCH_Args},
7424{0}
7425};
7426