2017-12-21 4 views
0

Gibt es eine effiziente Methode, bestimmte Klassen von Schlüsseln in einem Redis-Cluster zu zählen?Redis: Zähle bestimmte Klasse von Schlüsseln auf einem Redis Cluster?

Hier bedeutet "spezifische Klasse von Schlüsseln" die Schlüssel, die für einen gemeinsamen Zweck verwendet werden; zum Beispiel Sitzungsschlüssel. Sie können ein gemeinsames Schlüsselnamenpräfix haben. Es kann mehrere Klassen geben. Von jetzt an werde ich die Klasse der Schlüssel als einfach die Schlüssel bezeichnen.

Was will ich tun ist, wie folgt:

  • Redis Cluster verwendet werden muss.
  • Die Schlüssel müssen an die Knoten des Redis-Clusters verteilt werden.
  • Es muss eine effiziente Möglichkeit geben, die Anzahl der Schlüssel auf allen Knoten des Redis-Clusters zu zählen.
  • Die Schlüssel können TTL haben - das heißt, kann ablaufen.
  • Die Anzahl der Knoten des Redis-Clusters kann zur Laufzeit geändert werden, und Hash-Slots können neu verteilt werden.
  • Clients werden mit Node.js implementiert.

Ich habe die Dokumentation gelesen, konnte aber keine richtige Lösung finden.

Vielen Dank im Voraus.

Antwort

1

Nein, im Grunde genommen. Das gibt es auch nicht für "klassisch" (nicht-Cluster). Um dies ohne einen zusätzlichen Speichermechanismus zu tun, müssten Sie wiederholt SCAN verwenden, um über den gesamten Schlüsselbereich zu iterieren. Zum Glück akzeptiert es zumindest einen Filter (Sie müssen also nicht jeden Schlüssel abrufen), ist aber weit davon entfernt, effizient zu sein - Sie würden dies in der Regel nur als Überprüfungsfunktion und nicht als operative Funktion durchführen. Wir haben eine solche Funktion in das Redis-Plugin von "opserver" integriert.

Wenn Sie zum Cluster wechseln, müssen Sie dies wiederholen, aber auf jedem Satz von Replikationsvertikalen. Normalerweise erhalten Sie diese Liste über die Befehle CLUSTER, so dass die dynamische Natur der Knoten strittig ist.

Sowohl im klassischen als auch im Cluster wäre es empfehlenswert, dies nur auf einem Replikat zu tun - nicht dem Master. Und noch einmal: Nur als Admin-Tool, nicht als routinemäßiger Teil Ihres Systems.

Verwenden Sie nicht KEYS, um dies zu tun. Bevorzugen Sie SCAN.