Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
5654946
added: ring buffer
sggeorgiev Nov 19, 2025
c850356
added: avl tree
sggeorgiev Nov 17, 2025
2bdd282
chnaged: improve avl tree
sggeorgiev Nov 19, 2025
fd81f8b
added: IDMP option to XADD
sggeorgiev Nov 19, 2025
1c552bd
changed: use robj instead to copy the uid
sggeorgiev Nov 20, 2025
06759fc
added: tring
sggeorgiev Nov 20, 2025
22b0071
changed: XADD to use tring with IDMP option
sggeorgiev Nov 20, 2025
aeec5ed
changed: improve tringPop
sggeorgiev Nov 20, 2025
e938305
changed: improve tring
sggeorgiev Nov 21, 2025
f811890
changed: improve tring
sggeorgiev Nov 21, 2025
b3eb04d
changed: improve tring
sggeorgiev Nov 21, 2025
c4c200f
changed: improve tring
sggeorgiev Nov 22, 2025
00dfdca
changed: improve tring
sggeorgiev Nov 23, 2025
692b039
changed: improve tring
sggeorgiev Nov 23, 2025
bc8d8a1
changed: improve tring
sggeorgiev Nov 23, 2025
d11980e
changed: improve trimng
sggeorgiev Nov 23, 2025
647372b
changed: improve tring
sggeorgiev Nov 24, 2025
cc2674f
changed: improve IDMP
sggeorgiev Nov 24, 2025
17c9c28
added: config command
sggeorgiev Nov 24, 2025
02ecffa
added: tests
sggeorgiev Nov 28, 2025
afce4b3
added: tests
sggeorgiev Nov 28, 2025
5095171
added: tring clear
sggeorgiev Dec 1, 2025
04ada99
changed: string compare
sggeorgiev Dec 1, 2025
eb6fcdd
fixed: issue
sggeorgiev Dec 1, 2025
3c32f64
fixed: issue
sggeorgiev Dec 1, 2025
fdd7f99
fixed: issue
sggeorgiev Dec 1, 2025
cba1036
Merge branch 'unstable' into xadd-idmp-tring
sggeorgiev Dec 1, 2025
79d2c75
fixed: issue
sggeorgiev Dec 1, 2025
aa6cc60
changed: organization
sggeorgiev Dec 1, 2025
b7d9a19
changed: maxsize logic
sggeorgiev Dec 1, 2025
6156ae9
added: IDMPAUTO option to XADD
sggeorgiev Dec 2, 2025
f16f9b7
added: IDMPAUTO tests
sggeorgiev Dec 2, 2025
3f1f15d
fixed: issue
sggeorgiev Dec 2, 2025
85d84af
fixed: issue
sggeorgiev Dec 2, 2025
ab1ba5b
fixed: issue
sggeorgiev Dec 2, 2025
e21d59b
fixed: issue
sggeorgiev Dec 2, 2025
d9b6432
changed: duration to be in seconds
sggeorgiev Dec 2, 2025
a2bdb7e
changed: duration to be in seconds
sggeorgiev Dec 2, 2025
cb7607b
fixed: issue
sggeorgiev Dec 2, 2025
69aeb8d
fixed: issue
sggeorgiev Dec 2, 2025
a974288
changed: idmp string is hashed before inserting in the tring
sggeorgiev Dec 3, 2025
5e10a0b
changed: use dictionary instead tring
sggeorgiev Dec 7, 2025
042e4a0
changed: code organization
sggeorgiev Dec 7, 2025
ef5034a
fixed: issue
sggeorgiev Dec 7, 2025
a83c42d
fixed: issue
sggeorgiev Dec 8, 2025
8d1318b
changed: code organization
sggeorgiev Dec 8, 2025
b2fc262
changed: code organization
sggeorgiev Dec 8, 2025
1231bbf
fixed: issue
sggeorgiev Dec 8, 2025
215c1c4
changed: iid type
sggeorgiev Dec 8, 2025
99793b9
changed: comment
sggeorgiev Dec 8, 2025
da42612
added: iids-tracked and iids-added to XINFO STREAM
sggeorgiev Dec 8, 2025
622c9ba
fixed: issue
sggeorgiev Dec 8, 2025
a54a79d
fixed: issue
sggeorgiev Dec 8, 2025
da672f5
Merge branch 'unstable' into xadd-idmp-dict
sggeorgiev Dec 9, 2025
2d81fe0
changed: comments
sggeorgiev Dec 9, 2025
a3d35b7
changed: comments
sggeorgiev Dec 9, 2025
0346dff
changed: style
sggeorgiev Dec 9, 2025
86d1157
added: idmp producer
sggeorgiev Dec 10, 2025
8c09f65
fixed: issue
sggeorgiev Dec 10, 2025
2f33110
fixed: issue
sggeorgiev Dec 10, 2025
129cf3c
changed: default values and limits
sggeorgiev Dec 11, 2025
8d947bb
fixed: issue
sggeorgiev Dec 11, 2025
d3e8f57
fixed: issue
sggeorgiev Dec 11, 2025
4f041ff
fixed: issues from review
sggeorgiev Dec 12, 2025
2c11492
fixed: issues from review
sggeorgiev Dec 12, 2025
ac94bb0
added: the count of duplicate iids in xinfo stream
sggeorgiev Dec 15, 2025
16f3dc1
fixed: poblem from daily run
sggeorgiev Dec 15, 2025
2cdf6f8
Merge branch 'unstable' into xadd-idmp-dict
sggeorgiev Dec 15, 2025
2fbeedd
fixed: issue from review
sggeorgiev Dec 16, 2025
fb1f435
fixed: issue from review
sggeorgiev Dec 16, 2025
04df3f2
added: defrag test
sggeorgiev Dec 18, 2025
178ef2c
fixed: issue from review
sggeorgiev Dec 18, 2025
3f89349
fixed: issue from review
sggeorgiev Dec 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 117 additions & 2 deletions src/commands.def
Original file line number Diff line number Diff line change
Expand Up @@ -9914,6 +9914,25 @@ struct COMMAND_ARG XADD_condition_Subargs[] = {
{MAKE_ARG("acked",ARG_TYPE_PURE_TOKEN,-1,"ACKED",NULL,NULL,CMD_ARG_NONE,0,NULL)},
};

/* XADD idmp idmpauto_with_pid argument table */
struct COMMAND_ARG XADD_idmp_idmpauto_with_pid_Subargs[] = {
{MAKE_ARG("idmpauto-token",ARG_TYPE_PURE_TOKEN,-1,"IDMPAUTO",NULL,NULL,CMD_ARG_NONE,0,NULL)},
{MAKE_ARG("pid",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
};

/* XADD idmp idmp_with_pid_iid argument table */
struct COMMAND_ARG XADD_idmp_idmp_with_pid_iid_Subargs[] = {
{MAKE_ARG("idmp-token",ARG_TYPE_PURE_TOKEN,-1,"IDMP",NULL,NULL,CMD_ARG_NONE,0,NULL)},
{MAKE_ARG("pid",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
{MAKE_ARG("iid",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
};

/* XADD idmp argument table */
struct COMMAND_ARG XADD_idmp_Subargs[] = {
{MAKE_ARG("idmpauto-with-pid",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,2,NULL),.subargs=XADD_idmp_idmpauto_with_pid_Subargs},
{MAKE_ARG("idmp-with-pid-iid",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_NONE,3,NULL),.subargs=XADD_idmp_idmp_with_pid_iid_Subargs},
};

/* XADD trim strategy argument table */
struct COMMAND_ARG XADD_trim_strategy_Subargs[] = {
{MAKE_ARG("maxlen",ARG_TYPE_PURE_TOKEN,-1,"MAXLEN",NULL,NULL,CMD_ARG_NONE,0,NULL)},
Expand Down Expand Up @@ -9951,6 +9970,7 @@ struct COMMAND_ARG XADD_Args[] = {
{MAKE_ARG("key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
{MAKE_ARG("nomkstream",ARG_TYPE_PURE_TOKEN,-1,"NOMKSTREAM",NULL,"6.2.0",CMD_ARG_OPTIONAL,0,NULL)},
{MAKE_ARG("condition",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,3,NULL),.subargs=XADD_condition_Subargs},
{MAKE_ARG("idmp",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,2,NULL),.subargs=XADD_idmp_Subargs},
{MAKE_ARG("trim",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,4,NULL),.subargs=XADD_trim_Subargs},
{MAKE_ARG("id-selector",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,2,NULL),.subargs=XADD_id_selector_Subargs},
{MAKE_ARG("data",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,2,NULL),.subargs=XADD_data_Subargs},
Expand Down Expand Up @@ -10283,6 +10303,99 @@ struct COMMAND_STRUCT XGROUP_Subcommands[] = {
#define XGROUP_Keyspecs NULL
#endif

/********** XIDMP CFGGET ********************/

#ifndef SKIP_CMD_HISTORY_TABLE
/* XIDMP CFGGET history */
#define XIDMP_CFGGET_History NULL
#endif

#ifndef SKIP_CMD_TIPS_TABLE
/* XIDMP CFGGET tips */
#define XIDMP_CFGGET_Tips NULL
#endif

#ifndef SKIP_CMD_KEY_SPECS_TABLE
/* XIDMP CFGGET key specs */
keySpec XIDMP_CFGGET_Keyspecs[1] = {
{NULL,CMD_KEY_RO|CMD_KEY_ACCESS,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}
};
#endif

/* XIDMP CFGGET parameter argument table */
struct COMMAND_ARG XIDMP_CFGGET_parameter_Subargs[] = {
{MAKE_ARG("duration",ARG_TYPE_PURE_TOKEN,-1,"DURATION",NULL,NULL,CMD_ARG_NONE,0,NULL)},
{MAKE_ARG("maxsize",ARG_TYPE_PURE_TOKEN,-1,"MAXSIZE",NULL,NULL,CMD_ARG_NONE,0,NULL)},
};

/* XIDMP CFGGET argument table */
struct COMMAND_ARG XIDMP_CFGGET_Args[] = {
{MAKE_ARG("key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
{MAKE_ARG("parameter",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE,2,NULL),.subargs=XIDMP_CFGGET_parameter_Subargs},
};

/********** XIDMP CFGSET ********************/

#ifndef SKIP_CMD_HISTORY_TABLE
/* XIDMP CFGSET history */
#define XIDMP_CFGSET_History NULL
#endif

#ifndef SKIP_CMD_TIPS_TABLE
/* XIDMP CFGSET tips */
#define XIDMP_CFGSET_Tips NULL
#endif

#ifndef SKIP_CMD_KEY_SPECS_TABLE
/* XIDMP CFGSET key specs */
keySpec XIDMP_CFGSET_Keyspecs[1] = {
{NULL,CMD_KEY_RW|CMD_KEY_UPDATE,KSPEC_BS_INDEX,.bs.index={2},KSPEC_FK_RANGE,.fk.range={0,1,0}}
};
#endif

/* XIDMP CFGSET duration_block argument table */
struct COMMAND_ARG XIDMP_CFGSET_duration_block_Subargs[] = {
{MAKE_ARG("duration-token",ARG_TYPE_PURE_TOKEN,-1,"DURATION",NULL,NULL,CMD_ARG_NONE,0,NULL)},
{MAKE_ARG("duration",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
};

/* XIDMP CFGSET maxsize_block argument table */
struct COMMAND_ARG XIDMP_CFGSET_maxsize_block_Subargs[] = {
{MAKE_ARG("maxsize-token",ARG_TYPE_PURE_TOKEN,-1,"MAXSIZE",NULL,NULL,CMD_ARG_NONE,0,NULL)},
{MAKE_ARG("maxsize",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
};

/* XIDMP CFGSET argument table */
struct COMMAND_ARG XIDMP_CFGSET_Args[] = {
{MAKE_ARG("key",ARG_TYPE_KEY,0,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)},
{MAKE_ARG("duration-block",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,2,NULL),.subargs=XIDMP_CFGSET_duration_block_Subargs},
{MAKE_ARG("maxsize-block",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL,2,NULL),.subargs=XIDMP_CFGSET_maxsize_block_Subargs},
};

/* XIDMP command table */
struct COMMAND_STRUCT XIDMP_Subcommands[] = {
{MAKE_CMD("cfgget","Returns the IDMP configuration parameters for a stream.","O(1)","8.6.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XIDMP_CFGGET_History,0,XIDMP_CFGGET_Tips,0,xidmpCommand,-3,CMD_READONLY|CMD_FAST,ACL_CATEGORY_STREAM,XIDMP_CFGGET_Keyspecs,1,NULL,2),.args=XIDMP_CFGGET_Args},
{MAKE_CMD("cfgset","Sets the IDMP configuration parameters for a stream.","O(1)","8.6.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XIDMP_CFGSET_History,0,XIDMP_CFGSET_Tips,0,xidmpCommand,-3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STREAM,XIDMP_CFGSET_Keyspecs,1,NULL,3),.args=XIDMP_CFGSET_Args},
{0}
};

/********** XIDMP ********************/

#ifndef SKIP_CMD_HISTORY_TABLE
/* XIDMP history */
#define XIDMP_History NULL
#endif

#ifndef SKIP_CMD_TIPS_TABLE
/* XIDMP tips */
#define XIDMP_Tips NULL
#endif

#ifndef SKIP_CMD_KEY_SPECS_TABLE
/* XIDMP key specs */
#define XIDMP_Keyspecs NULL
#endif

/********** XINFO CONSUMERS ********************/

#ifndef SKIP_CMD_HISTORY_TABLE
Expand Down Expand Up @@ -10363,6 +10476,7 @@ commandHistory XINFO_STREAM_History[] = {
{"6.0.0","Added the `FULL` modifier."},
{"7.0.0","Added the `max-deleted-entry-id`, `entries-added`, `recorded-first-entry-id`, `entries-read` and `lag` fields"},
{"7.2.0","Added the `active-time` field, and changed the meaning of `seen-time`."},
{"8.6.0","Added the `pids-tracked`, `iids-tracked`, `iids-added` and `iids-duplicates` fields for IDMP tracking."},
};
#endif

Expand Down Expand Up @@ -10395,7 +10509,7 @@ struct COMMAND_STRUCT XINFO_Subcommands[] = {
{MAKE_CMD("consumers","Returns a list of the consumers in a consumer group.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XINFO_CONSUMERS_History,1,XINFO_CONSUMERS_Tips,1,xinfoCommand,4,CMD_READONLY,ACL_CATEGORY_STREAM,XINFO_CONSUMERS_Keyspecs,1,NULL,2),.args=XINFO_CONSUMERS_Args},
{MAKE_CMD("groups","Returns a list of the consumer groups of a stream.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XINFO_GROUPS_History,1,XINFO_GROUPS_Tips,0,xinfoCommand,3,CMD_READONLY,ACL_CATEGORY_STREAM,XINFO_GROUPS_Keyspecs,1,NULL,1),.args=XINFO_GROUPS_Args},
{MAKE_CMD("help","Returns helpful text about the different subcommands.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XINFO_HELP_History,0,XINFO_HELP_Tips,0,xinfoCommand,2,CMD_LOADING|CMD_STALE,ACL_CATEGORY_STREAM,XINFO_HELP_Keyspecs,0,NULL,0)},
{MAKE_CMD("stream","Returns information about a stream.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XINFO_STREAM_History,3,XINFO_STREAM_Tips,0,xinfoCommand,-3,CMD_READONLY,ACL_CATEGORY_STREAM,XINFO_STREAM_Keyspecs,1,NULL,2),.args=XINFO_STREAM_Args},
{MAKE_CMD("stream","Returns information about a stream.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XINFO_STREAM_History,4,XINFO_STREAM_Tips,0,xinfoCommand,-3,CMD_READONLY,ACL_CATEGORY_STREAM,XINFO_STREAM_Keyspecs,1,NULL,2),.args=XINFO_STREAM_Args},
{0}
};

Expand Down Expand Up @@ -11734,12 +11848,13 @@ struct COMMAND_STRUCT redisCommandTable[] = {
/* stream */
{MAKE_CMD("xack","Returns the number of messages that were successfully acknowledged by the consumer group member of a stream.","O(1) for each message ID processed.","5.0.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XACK_History,0,XACK_Tips,0,xackCommand,-4,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STREAM,XACK_Keyspecs,1,NULL,3),.args=XACK_Args},
{MAKE_CMD("xackdel","Acknowledges and deletes one or multiple messages for a stream consumer group.","O(1) for each message ID processed.","8.2.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XACKDEL_History,0,XACKDEL_Tips,0,xackdelCommand,-6,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STREAM,XACKDEL_Keyspecs,1,NULL,4),.args=XACKDEL_Args},
{MAKE_CMD("xadd","Appends a new message to a stream. Creates the key if it doesn't exist.","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,"stream",COMMAND_GROUP_STREAM,XADD_History,3,XADD_Tips,1,xaddCommand,-5,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STREAM,XADD_Keyspecs,1,NULL,6),.args=XADD_Args},
{MAKE_CMD("xadd","Appends a new message to a stream. Creates the key if it doesn't exist.","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,"stream",COMMAND_GROUP_STREAM,XADD_History,3,XADD_Tips,1,xaddCommand,-5,CMD_WRITE|CMD_DENYOOM|CMD_FAST,ACL_CATEGORY_STREAM,XADD_Keyspecs,1,NULL,7),.args=XADD_Args},
{MAKE_CMD("xautoclaim","Changes, or acquires, ownership of messages in a consumer group, as if the messages were delivered to as consumer group member.","O(1) if COUNT is small.","6.2.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XAUTOCLAIM_History,1,XAUTOCLAIM_Tips,1,xautoclaimCommand,-6,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STREAM,XAUTOCLAIM_Keyspecs,1,NULL,7),.args=XAUTOCLAIM_Args},
{MAKE_CMD("xclaim","Changes, or acquires, ownership of a message in a consumer group, as if the message was delivered a consumer group member.","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,"stream",COMMAND_GROUP_STREAM,XCLAIM_History,0,XCLAIM_Tips,1,xclaimCommand,-6,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STREAM,XCLAIM_Keyspecs,1,NULL,11),.args=XCLAIM_Args},
{MAKE_CMD("xdel","Returns the number of messages after removing them from a stream.","O(1) for each single item to delete in the stream, regardless of the stream size.","5.0.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XDEL_History,0,XDEL_Tips,0,xdelCommand,-3,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STREAM,XDEL_Keyspecs,1,NULL,2),.args=XDEL_Args},
{MAKE_CMD("xdelex","Deletes one or multiple entries from the stream.","O(1) for each single item to delete in the stream, regardless of the stream size.","8.2.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XDELEX_History,0,XDELEX_Tips,0,xdelexCommand,-5,CMD_WRITE|CMD_FAST,ACL_CATEGORY_STREAM,XDELEX_Keyspecs,1,NULL,3),.args=XDELEX_Args},
{MAKE_CMD("xgroup","A container for consumer groups commands.","Depends on subcommand.","5.0.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XGROUP_History,0,XGROUP_Tips,0,NULL,-2,0,0,XGROUP_Keyspecs,0,NULL,0),.subcommands=XGROUP_Subcommands},
{MAKE_CMD("xidmp","A container for stream IDMP (Idempotent Message Producer) configuration commands.","Depends on subcommand.","8.2.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XIDMP_History,0,XIDMP_Tips,0,NULL,-2,0,0,XIDMP_Keyspecs,0,NULL,0),.subcommands=XIDMP_Subcommands},
{MAKE_CMD("xinfo","A container for stream introspection commands.","Depends on subcommand.","5.0.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XINFO_History,0,XINFO_Tips,0,NULL,-2,0,0,XINFO_Keyspecs,0,NULL,0),.subcommands=XINFO_Subcommands},
{MAKE_CMD("xlen","Return the number of messages in a stream.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,"stream",COMMAND_GROUP_STREAM,XLEN_History,0,XLEN_Tips,0,xlenCommand,2,CMD_READONLY|CMD_FAST,ACL_CATEGORY_STREAM,XLEN_Keyspecs,1,NULL,1),.args=XLEN_Args},
{MAKE_CMD("xpending","Returns the information and entries from a stream consumer group's pending entries list.","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,"stream",COMMAND_GROUP_STREAM,XPENDING_History,1,XPENDING_Tips,1,xpendingCommand,-3,CMD_READONLY,ACL_CATEGORY_STREAM,XPENDING_Keyspecs,1,NULL,3),.args=XPENDING_Args},
Expand Down
44 changes: 44 additions & 0 deletions src/commands/xadd.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,50 @@
}
]
},
{
"name": "idmp",
"type": "oneof",
"optional": true,
"arguments": [
{
"name": "idmpauto-with-pid",
"type": "block",
"arguments": [
{
"token": "IDMPAUTO",
"name": "idmpauto-token",
"type": "pure-token"
},
{
"name": "pid",
"type": "string",
"display_text": "producer-id"
}
]
},
{
"name": "idmp-with-pid-iid",
"type": "block",
"arguments": [
{
"token": "IDMP",
"name": "idmp-token",
"type": "pure-token"
},
{
"name": "pid",
"type": "string",
"display_text": "producer-id"
},
{
"name": "iid",
"type": "string",
"display_text": "idempotent-id"
}
]
}
]
},
{
"name": "trim",
"type": "block",
Expand Down
70 changes: 70 additions & 0 deletions src/commands/xidmp-cfgget.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
{
"CFGGET": {
"summary": "Returns the IDMP configuration parameters for a stream.",
"complexity": "O(1)",
"group": "stream",
"since": "8.6.0",
"arity": -3,
"container": "XIDMP",
"function": "xidmpCommand",
"command_flags": [
"READONLY",
"FAST"
],
"acl_categories": [
"STREAM"
],
"reply_schema": {
"type": "object",
"additionalProperties": {
"type": "integer"
}
},
"key_specs": [
{
"flags": [
"RO",
"ACCESS"
],
"begin_search": {
"index": {
"pos": 2
}
},
"find_keys": {
"range": {
"lastkey": 0,
"step": 1,
"limit": 0
}
}
}
],
"arguments": [
{
"name": "key",
"type": "key",
"key_spec_index": 0
},
{
"name": "parameter",
"type": "oneof",
"optional": true,
"multiple": true,
"arguments": [
{
"name": "duration",
"type": "pure-token",
"token": "DURATION"
},
{
"name": "maxsize",
"type": "pure-token",
"token": "MAXSIZE"
}
]
}
]
}
}

81 changes: 81 additions & 0 deletions src/commands/xidmp-cfgset.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
{
"CFGSET": {
"summary": "Sets the IDMP configuration parameters for a stream.",
"complexity": "O(1)",
"group": "stream",
"since": "8.6.0",
"arity": -3,
"container": "XIDMP",
"function": "xidmpCommand",
"command_flags": [
"WRITE",
"FAST"
],
"acl_categories": [
"STREAM"
],
"reply_schema": {
"const": "OK"
},
"key_specs": [
{
"flags": [
"RW",
"UPDATE"
],
"begin_search": {
"index": {
"pos": 2
}
},
"find_keys": {
"range": {
"lastkey": 0,
"step": 1,
"limit": 0
}
}
}
],
"arguments": [
{
"name": "key",
"type": "key",
"key_spec_index": 0
},
{
"name": "duration-block",
"type": "block",
"optional": true,
"arguments": [
{
"name": "duration-token",
"type": "pure-token",
"token": "DURATION"
},
{
"name": "duration",
"type": "integer"
}
]
},
{
"name": "maxsize-block",
"type": "block",
"optional": true,
"arguments": [
{
"name": "maxsize-token",
"type": "pure-token",
"token": "MAXSIZE"
},
{
"name": "maxsize",
"type": "integer"
}
]
}
]
}
}

10 changes: 10 additions & 0 deletions src/commands/xidmp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"XIDMP": {
"summary": "A container for stream IDMP (Idempotent Message Producer) configuration commands.",
"complexity": "Depends on subcommand.",
"group": "stream",
"since": "8.2.0",
"arity": -2
}
}

Loading
Loading