StackExchange / StackExchange/StackExchange.Redis

Resumable scan through keys

Aperta
#2,425 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. 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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.