StackExchange / StackExchange/StackExchange.Redis

Resumable scan through keys

Offen
#2,425 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
C#
Sterne
6.2k
Forks
1.6k
Ø Merge
1 T. 15 Std.
Gemergte PRs (30 T.)
43

Beschreibung

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);

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie mit dem in den Beispielen erwähnten Einstiegspunkt IServer.KeysAsync und der Schnittstelle IScanningCursor. Verfolgen Sie anschließend, wie der Cursor nach der asynchronen Enumeration bereitgestellt wird. Reproduzieren Sie die Batch-Schleife gegen Redis und vergleichen Sie den beobachteten Cursor mit dem erwarteten Fortsetzungsverhalten; als erledigt gilt die Aufgabe, wenn das beabsichtigte fortsetzbare Scan-Verhalten festgestellt oder die Abweichung dokumentiert ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
csharp, redis
Bereich
api, databases
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
20/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.