Skip to content

Commit 14d95f7

Browse files
dwdoughertyandy-stark-redismich-elle-lunaadrianoamaral
authored
ROS 8.4 docs (#2368)
* DOC-5799: search: document procedure for building with Intel binaries (#2206) * DOC-5799: search: document procedure for building with Intel binaries * Fix warning shortcode use * DOC-5777: search: document new SCORERs (#2204) * DOC-5777: search: document new SCORERs * Update the admin. overview page * Apply suggestions from code review Co-authored-by: andy-stark-redis <164213578+andy-stark-redis@users.noreply.github.com> * Apply suggestions from code review --------- Co-authored-by: andy-stark-redis <164213578+andy-stark-redis@users.noreply.github.com> * DOC-5818: vector set: add new VRANGE command (#2233) * DOC-5575: update the modules API page (#2305) * DOC-5853: update CLIENT LIST history information (#2306) * DOC-5864: update tested-on information (#2311) * DOC-5800: search: document new vector search attrib. (#2209) * DOC-5800: search: document new vector search attrib. * Remove temp. file * Remove query parm info from FT.SEARCH and FT.AGG... cmd pages * Add reference to the query attributes page * Apply suggestions from code review Co-authored-by: andy-stark-redis <164213578+andy-stark-redis@users.noreply.github.com> --------- Co-authored-by: andy-stark-redis <164213578+andy-stark-redis@users.noreply.github.com> * DOC-5717: update XREADGROUP command page (#2312) * DOC-5720: add new MSETEX command page (#2310) * DOC-5720: add new MSETEX command page * Apply code review suggestions * DOC-5718: add new string commands (#2307) * Initial commit * DOC-5718: add new string commands * Apply code review suggestions * Apply more code review suggestions * Apply yet more code review suggestions * DOC-5867: add new CLUSTER MIGRATION command page (etc) (#2314) * DOC-5867: add new CLUSTER MIGRATION command page (etc) * Apply code review suggestions * Apply code review suggestions * DOC-5574: add 8.4-RC1 release notes (#2344) * DOC-5574: add 8.4-RC1 release notes * Update content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.4-release-notes.md Co-authored-by: mich-elle-luna <153109578+mich-elle-luna@users.noreply.github.com> --------- Co-authored-by: mich-elle-luna <153109578+mich-elle-luna@users.noreply.github.com> * DOC-5577: update what's new page with 8.4 info (#2345) * DOC-5863: update config. params pages (#2346) * DOC-5589: update RS/RC compat. info. for new cmds (#2352) * DOC-5924: update final bits and pieces for 8.4 release (#2353) * DOC-5924: update final bits and pieces for 8.4 release * update two commands per JSON files * DOC-5801: search: add new FT.HYBRID command (#2210) * DOC-5801: search: add new FT.HYBRID command * Add compat. info * Fixed commands.json parsing; updated FT.HYBRID syntax * Apply suggestions from code review Co-authored-by: adrianoamaral <adriano.amaral@redis.com> * Update content/commands/ft.hybrid.md Co-authored-by: adrianoamaral <adriano.amaral@redis.com> * Fix build error and provide more copy-editing * Fix compat. heading --------- Co-authored-by: adrianoamaral <adriano.amaral@redis.com> * DOC-5576: add 8.4 GA release notes --------- Co-authored-by: andy-stark-redis <164213578+andy-stark-redis@users.noreply.github.com> Co-authored-by: mich-elle-luna <153109578+mich-elle-luna@users.noreply.github.com> Co-authored-by: adrianoamaral <adriano.amaral@redis.com>
1 parent 32f922c commit 14d95f7

File tree

42 files changed

+2008
-67
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+2008
-67
lines changed

build/components/syntax.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ class ArgumentType(Enum):
2020
BLOCK = 'block'
2121
PURE_TOKEN = 'pure-token'
2222
COMMAND = 'command'
23+
FUNCTION = 'function'
24+
INDEX = 'index'
25+
KEYNUM = 'keynum'
26+
KEYWORD = 'keyword'
27+
RANGE = 'range'
28+
UNKNOWN = 'unknown'
2329

2430

2531
class Argument:
@@ -28,8 +34,8 @@ def __init__(self, data: dict = {}, level: int = 0, max_width: int = 640) -> Non
2834
self._stack = []
2935
self._level: int = level
3036
self._max_width: int = max_width
31-
self._name: str = data['name']
32-
self._type = ArgumentType(data['type'])
37+
self._name: str = data.get('name', data.get('token', 'unnamed'))
38+
self._type = ArgumentType(data.get('type', 'string'))
3339
self._optional: bool = data.get('optional', False)
3440
self._multiple: bool = data.get('multiple', False)
3541
self._multiple_token: bool = data.get('multiple_token', False)
@@ -49,6 +55,11 @@ def syntax(self, **kwargs) -> str:
4955
args += ' '.join([arg.syntax() for arg in self._arguments])
5056
elif self._type == ArgumentType.ONEOF:
5157
args += f' | '.join([arg.syntax() for arg in self._arguments])
58+
elif self._type == ArgumentType.FUNCTION:
59+
# Functions should display their token/name, not expand nested arguments
60+
args += self._display
61+
if show_types:
62+
args += f':{self._type.value}'
5263
elif self._type != ArgumentType.PURE_TOKEN:
5364
args += self._display
5465
if show_types:

content/commands/client-list.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,12 @@ history:
7070
- Added `resp`, `multi-mem`, `rbs` and `rbp` fields.
7171
- - 7.0.3
7272
- Added `ssub` field.
73+
- - 7.2.0
74+
- Added `lib-name` and `lib-ver` fields.
75+
- - 7.4.0
76+
- Added `watch` field.
77+
- - 8.0.0
78+
- Added `io-thread` field.
7379
linkTitle: CLIENT LIST
7480
since: 2.4.0
7581
summary: Lists open connections.
@@ -129,9 +135,11 @@ b: the client is waiting in a blocking operation
129135
c: connection to be closed after writing entire reply
130136
d: a watched keys has been modified - EXEC will fail
131137
e: the client is excluded from the client eviction mechanism
138+
g: the client is responsible for migrating slots (atomic slot migration)
132139
i: the client is waiting for a VM I/O (deprecated)
133140
M: the client is a master
134141
N: no specific flag set
142+
o: the client is responsible for importing slots (atomic slot migration)
135143
O: the client is a client in MONITOR mode
136144
P: the client is a Pub/Sub subscriber
137145
r: the client is in readonly mode against a cluster node
@@ -142,7 +150,7 @@ x: the client is in a MULTI/EXEC context
142150
t: the client enabled keys tracking in order to perform client side caching
143151
T: the client will not touch the LRU/LFU of the keys it accesses
144152
R: the client tracking target client is invalid
145-
B: the client enabled broadcast tracking mode
153+
B: the client enabled broadcast tracking mode
146154
```
147155

148156
The file descriptor events can be:

content/commands/cluster-countkeysinslot.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ command only queries the local data set, so contacting a node
3434
that is not serving the specified hash slot will always result in a count of
3535
zero being returned.
3636

37+
{{< note>}}During atomic slot migration operations (available since Redis 8.4.0), keys being imported or trimmed will be filtered out from the results.
38+
{{< /note >}}
39+
3740
```
3841
> CLUSTER COUNTKEYSINSLOT 7000
3942
(integer) 50341

content/commands/cluster-getkeysinslot.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ node to another. The way the rehashing is performed is exposed in the Redis
4444
Cluster specification, or in a more simple to digest form, as an appendix
4545
of the [`CLUSTER SETSLOT`]({{< relref "/commands/cluster-setslot" >}}) command documentation.
4646

47+
{{< note >}}During atomic slot migration operations (available since Redis 8.4.0), keys being imported or trimmed will be filtered out from the results.
48+
{{< /note >}}
49+
4750
```
4851
> CLUSTER GETKEYSINSLOT 7000 3
4952
1) "key_39015"

content/commands/cluster-info.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,16 @@ total_cluster_links_buffer_limit_exceeded:0
5858
* `cluster_stats_messages_received`: Number of messages received via the cluster node-to-node binary bus.
5959
* `total_cluster_links_buffer_limit_exceeded`: Accumulated count of cluster links freed due to exceeding the `cluster-link-sendbuf-limit` configuration.
6060

61+
The following atomic slot migration fields may be included in the reply (available since Redis 8.4.0):
62+
63+
* `cluster_slot_migration_active_tasks`: Number of in-progress ASM tasks. Currently, it will be 1 or 0.
64+
* `cluster_slot_migration_active_trim_running`: Number of active trim jobs in progress and scheduled.
65+
* `cluster_slot_migration_active_trim_current_job_keys`: Number of keys scheduled for deletion in the current trim job.
66+
* `cluster_slot_migration_active_trim_current_job_trimmed`: Number of keys already deleted in the current trim job.
67+
* `cluster_slot_migration_stats_active_trim_started`: Total number of trim jobs that have started since the process began.
68+
* `cluster_slot_migration_stats_active_trim_completed`: Total number of trim jobs completed since the process began.
69+
* `cluster_slot_migration_stats_active_trim_cancelled`: Total number of trim jobs cancelled since the process began.
70+
6171
The following message-related fields may be included in the reply if the value is not 0:
6272
Each message type includes statistics on the number of messages sent and received.
6373
Here are the explanation of these fields:
Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
---
2+
acl_categories:
3+
- '@admin'
4+
- '@slow'
5+
- '@dangerous'
6+
arguments:
7+
- arguments:
8+
- arguments:
9+
- display_text: start-slot
10+
name: start-slot
11+
type: integer
12+
- display_text: end-slot
13+
name: end-slot
14+
type: integer
15+
multiple: true
16+
name: import
17+
token: IMPORT
18+
type: block
19+
- arguments:
20+
- display_text: task-id
21+
name: task-id
22+
token: ID
23+
type: string
24+
- display_text: all
25+
name: all
26+
token: ALL
27+
type: pure-token
28+
name: cancel
29+
token: CANCEL
30+
type: oneof
31+
- arguments:
32+
- display_text: task-id
33+
name: task-id
34+
optional: true
35+
token: ID
36+
type: string
37+
- display_text: all
38+
name: all
39+
optional: true
40+
token: ALL
41+
type: pure-token
42+
name: status
43+
token: STATUS
44+
type: block
45+
name: subcommand
46+
type: oneof
47+
arity: -4
48+
categories:
49+
- docs
50+
- develop
51+
- stack
52+
- oss
53+
- rs
54+
- rc
55+
- oss
56+
- kubernetes
57+
- clients
58+
command_flags:
59+
- admin
60+
- stale
61+
- no_async_loading
62+
complexity: O(N) where N is the total number of the slots between the start slot and
63+
end slot arguments.
64+
description: Start, monitor, and cancel atomic slot migration tasks.
65+
group: cluster
66+
hidden: false
67+
linkTitle: CLUSTER MIGRATION
68+
since: 8.4.0
69+
summary: Start, monitor, and cancel atomic slot migration tasks.
70+
syntax_fmt: "CLUSTER MIGRATION <IMPORT\_start-slot end-slot [start-slot end-slot ...]\n\
71+
\ | CANCEL\_<ID\_task-id | ALL> | STATUS\_<ID\_task-id | ALL>"
72+
syntax_str: ''
73+
title: CLUSTER MIGRATION
74+
---
75+
76+
The `CLUSTER MIGRATION` command provides atomic slot migration functionality for Redis Cluster. This command allows you to import slots from other nodes, monitor the progress of migration tasks, and cancel ongoing migrations.
77+
78+
## Required arguments
79+
80+
<details open><summary><code>subcommand</code></summary>
81+
82+
The subcommand specifies the operation to perform:
83+
84+
- `IMPORT <start-slot> <end-slot> [<start-slot> <end-slot> ...]`: Executes on the destination master. Accepts multiple slot ranges and triggers atomic migration for the specified ranges. Returns a task ID that you can use to monitor the status of the task.
85+
86+
- `CANCEL <ID <task-id> | ALL>`: Cancels an ongoing migration task by its ID or cancels all tasks if `ALL` is specified. Note: Cancelling a task on the source node does not stop the migration on the destination node, which will continue retrying until it is also cancelled there.
87+
88+
- `STATUS [ID <task-id> | ALL]`: Displays the status of current and completed atomic slot migration tasks. If a specific task ID is provided, it returns detailed information for that task only. If `ALL` is specified, it returns the status of all ongoing and completed tasks.
89+
90+
</details>
91+
92+
## Examples
93+
94+
Import slots 0-1000 and 2000-3000 to the current node:
95+
96+
```bash
97+
CLUSTER MIGRATION IMPORT 0 1000 2000 3000
98+
```
99+
100+
Check the status of all migration tasks:
101+
102+
```bash
103+
CLUSTER MIGRATION STATUS ALL
104+
```
105+
106+
Check the status of a specific migration task:
107+
108+
```bash
109+
CLUSTER MIGRATION STATUS ID 24cf41718b20f7f05901743dffc40bc9b15db339
110+
```
111+
112+
Cancel a specific migration task:
113+
114+
```bash
115+
CLUSTER MIGRATION CANCEL ID 24cf41718b20f7f05901743dffc40bc9b15db339
116+
```
117+
118+
Cancel all migration tasks:
119+
120+
```bash
121+
CLUSTER MIGRATION CANCEL ALL
122+
```
123+
124+
## Redis Software and Redis Cloud compatibility
125+
126+
| Redis<br />Enterprise | Redis<br />Cloud | <span style="min-width: 9em; display: table-cell">Notes</span> |
127+
|:----------------------|:-----------------|:------|
128+
| <span title="Not supported">&#x274c; Standard</span><br /><span title="Not supported"><nobr>&#x274c; Active-Active</nobr></span> | <span title="Not supported">&#x274c; Standard</span><br /><span title="Not supported"><nobr>&#x274c; Active-Active</nobr></span> | |
129+
130+
## Return information
131+
132+
{{< multitabs id="return-info"
133+
tab1="RESP2"
134+
tab2="RESP3" >}}
135+
136+
For the `IMPORT` subcommand:
137+
[Bulk string reply](../../develop/reference/protocol-spec#bulk-strings): task ID on success, or error message on failure.
138+
139+
For the `CANCEL` subcommand:
140+
[Integer reply](../../develop/reference/protocol-spec#integers): number of cancelled tasks.
141+
142+
For the `STATUS` subcommand:
143+
[Array reply](../../develop/reference/protocol-spec#arrays): a list of migration task details. Each task is represented as an array containing field-value pairs:
144+
- `id`: Task identifier
145+
- `slots`: Slot range being imported or migrated
146+
- `source`: Source node ID
147+
- `dest`: Destination node ID
148+
- `operation`: Operation type ("import" or "migrate")
149+
- `state`: Current state ("completed", "in_progress", etc.)
150+
- `last_error`: Last error message (empty if none)
151+
- `retries`: Number of retry attempts
152+
- `create_time`: Task creation timestamp
153+
- `start_time`: Task start timestamp
154+
- `end_time`: Task completion timestamp (if completed)
155+
- `write_pause_ms`: Write pause duration in milliseconds
156+
157+
-tab-sep-
158+
159+
For the `IMPORT` subcommand:
160+
[Bulk string reply](../../develop/reference/protocol-spec#bulk-strings): task ID on success, or error message on failure.
161+
162+
For the `CANCEL` subcommand:
163+
[Integer reply](../../develop/reference/protocol-spec#integers): number of cancelled tasks.
164+
165+
For the `STATUS` subcommand:
166+
[Array reply](../../develop/reference/protocol-spec#arrays): a list of migration task details. Each task is represented as an array containing field-value pairs:
167+
- `id`: Task identifier
168+
- `slots`: Slot range being migrated
169+
- `source`: Source node ID
170+
- `dest`: Destination node ID
171+
- `operation`: Operation type (typically "migrate")
172+
- `state`: Current state ("completed", "in_progress", etc.)
173+
- `last_error`: Last error message (empty if none)
174+
- `retries`: Number of retry attempts
175+
- `create_time`: Task creation timestamp
176+
- `start_time`: Task start timestamp
177+
- `end_time`: Task completion timestamp (if completed)
178+
- `write_pause_ms`: Write pause duration in milliseconds
179+
180+
{{< /multitabs >}}
181+
182+
## Notes
183+
184+
- The atomic slot migration feature is available starting from Redis 8.4.0.
185+
- Cancelling a task on the source node does not automatically stop the migration on the destination node.
186+
- In `CLUSTER MIGRATION STATUS` output, the "state" field will show `completed` for successful operations.
187+
- Tasks with empty "last_error" fields indicate no errors occurred during the migration process.
188+
189+
## Key visibility during migration
190+
191+
During atomic slot migration operations, keys in unowned slotsmay be filtered out from the following commands while importing or trimming is in progress:
192+
193+
- [`KEYS`]({{< relref "/commands/keys" >}})
194+
- [`SCAN`]({{< relref "/commands/scan" >}})
195+
- [`RANDOMKEY`]({{< relref "/commands/randomkey" >}})
196+
- [`CLUSTER GETKEYSINSLOT`]({{< relref "/commands/cluster-getkeysinslot" >}})
197+
- [`DBSIZE`]({{< relref "/commands/dbsize" >}})
198+
- [`CLUSTER COUNTKEYSINSLOT`]({{< relref "/commands/cluster-countkeysinslot" >}})
199+
200+
The [`INFO KEYSPACE`]({{< relref "/commands/info" >}}) command will continue to reflect the actual number of keys, including those being imported.
201+
202+
## Related configuration
203+
204+
- `cluster-slot-migration-handoff-max-lag-bytes`: After slot snapshot completion, if remaining replication stream size falls below this threshold, the source node pauses writes to hand off slot ownership. Higher values trigger handoff earlier but may cause longer write pauses. Lower values result in shorter write pauses but may be harder to reach with steady incoming writes (default: 1MB).
205+
- `cluster-slot-migration-write-pause-timeout`: Maximum duration that the source node pauses writes during ASM handoff. If the destination fails to take over slots within this timeout, the source assumes migration failed and resumes writes (default: 10 seconds).

0 commit comments

Comments
 (0)