/
githubmirror
/
redis
Обзор
Документация
Войти
/
githubmirror
/
redis
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
unstable
src/commands/xreadgroup.json
207 строк
8 KB
Sergei Georgiev
Fix ACL key checks for SORT, GEORADIUS/GEORADIUSBYMEMBER, and XREAD/XREADGROUP (#15478)
18 июл 2026, 10:21
Не верифицирован
18 июл 2026, 10:21
d331524
Код
Авторство
О чём код?
{ "XREADGROUP": { "summary": "Returns new or historical messages from a stream for a consumer in a group. Blocks until a message is available otherwise.", "complexity": "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.", "group": "stream", "since": "5.0.0", "arity": -7, "function": "xreadCommand", "get_keys_function": "xreadGetKeys", "history": [ [ "8.4.0", "Added the `CLAIM` option." ], [ "8.10.0", "Added the `MAXCOUNT` and `MAXSIZE` options." ] ], "command_flags": [ "BLOCKING", "WRITE" ], "acl_categories": [ "STREAM" ], "key_specs": [ { "notes": "Incomplete because a consumer/group named STREAMS (or options before GROUP) can shift the STREAMS keyword; fall back to xreadGetKeys", "flags": [ "RO", "ACCESS", "INCOMPLETE" ], "begin_search": { "keyword": { "keyword": "STREAMS", "startfrom": 4 } }, "find_keys": { "range": { "lastkey": -1, "step": 1, "limit": 2 } } } ], "arguments": [ { "token": "GROUP", "name": "group-block", "type": "block", "arguments": [ { "name": "group", "type": "string" }, { "name": "consumer", "type": "string" } ] }, { "token": "COUNT", "name": "count", "type": "integer", "optional": true }, { "token": "MAXCOUNT", "name": "maxcount", "type": "integer", "optional": true, "since": "8.10.0" }, { "token": "MAXSIZE", "name": "maxsize", "type": "integer", "optional": true, "since": "8.10.0" }, { "token": "BLOCK", "name": "milliseconds", "type": "integer", "optional": true }, { "token": "CLAIM", "name": "min-idle-time", "type": "integer", "optional": true, "since": "8.4.0" }, { "name": "noack", "token": "NOACK", "type": "pure-token", "optional": true }, { "name": "streams", "token": "STREAMS", "type": "block", "arguments": [ { "name": "key", "type": "key", "key_spec_index": 0, "multiple": true }, { "name": "ID", "type": "string", "multiple": true } ] } ], "reply_schema": { "oneOf": [ { "description": "If BLOCK option is specified and the timeout expired", "type": "null" }, { "description": "A map of key-value elements when each element composed of key name and the entries reported for that key", "type": "object", "additionalProperties": { "description": "The entries reported for that key", "type": "array", "items": { "oneOf": [ { "description": "Entry without CLAIM option", "type": "array", "minItems": 2, "maxItems": 2, "items": [ { "description": "Stream id", "type": "string", "pattern": "[0-9]+-[0-9]+" }, { "oneOf": [ { "description": "Array of field-value pairs", "type": "array", "items": { "type": "string" } }, { "type": "null" } ] } ] }, { "description": "Entry with CLAIM option - includes elapsed milliseconds and delivery count", "type": "array", "minItems": 4, "maxItems": 4, "items": [ { "description": "Stream id", "type": "string", "pattern": "[0-9]+-[0-9]+" }, { "oneOf": [ { "description": "Array of field-value pairs", "type": "array", "items": { "type": "string" } }, { "type": "null" } ] }, { "description": "Milliseconds elapsed since last delivery", "type": "integer" }, { "description": "Delivery count (0 for new messages, 1+ for claimed messages)", "type": "integer" } ] } ] } } } ] } } }