StackExchange / StackExchange/StackExchange.Redis
Resumable scan through keys
Nessuno ha ancora preso questa issue.
- Lingua principale
- C#
- Stelle
- 6.2k
- Fork
- 1.6k
- Merge medio
- 1g 15h
- PR unite (30g)
- 43
Descrizione
Hi, I am trying to process keys on server in this batch pattern.
var cursor = 0;
do
{
var keyBatch = await GetKeysAsync(cursor);
foreach (var key in keyBatch)
{
ProcessKey(key);
}
cursor = keyBatch.NextCursor;
} while (cursor != 0);
How can I achieve this behaviour using IServer and IScanningCursor? This does not work.
var cursor = 0L;
do
{
var counter = 0;
var keys = server.KeysAsync(1, "user:*", 1000, cursor);
await foreach (var key in keys)
{
counter++;
}
Console.WriteLine($"{cursor}, {counter}");
cursor = ((IScanningCursor) keys).Cursor;
} while (cursor != 0);
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia dal punto di ingresso IServer.KeysAsync e dall’interfaccia IScanningCursor menzionati negli esempi, quindi traccia come viene esposto il cursore dopo l’enumerazione asincrona. Riproduci il ciclo batch su Redis e confronta il cursore osservato con il comportamento di continuazione previsto; il lavoro è completato quando viene stabilito il comportamento di scansione riprendibile previsto oppure viene documentata la discrepanza.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- csharp, redis
- Ambito
- api, databases
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 20/100