-
Notifications
You must be signed in to change notification settings - Fork 957
Description
The problem/use-case that the feature addresses
Implement a scan cursor that can consistently scan the entire cluster, instead of today which requires individually targeting each node and sending it an individual SCAN command. This can also break, as slots can be migrated off the node and failovers can happen.
Description of the feature
Implement a consistent cluster scan with semantics like:
CSCAN <cluster cursor> [MATCH pattern] [COUNT count] [TYPE type]
The cluster cursor would be marked as NOT_KEY, but would be hashed like all other keys by the clients so that they would be routed to the next node. The cursor would contain a component that includes a hashtag, to represent the slot it's currently scanning.
the format of the cursor would be:
<version>-{hashtag}-<slot db id>
Alternatives you've considered
Extending the existing SCAN cursor to support scanning a specific slot, something like:
SCAN <cluster cursor> [SLOT X] [MATCH pattern] [COUNT count] [TYPE type]
This would require the end user to specific a specific slot, and the scan command would parse just that specific slot.
Additional information
See redis/redis#2702.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status