[PYTHON] Entleere den Inhalt der Redis-Datenbank mit Lua

Es ist eine Fortsetzung von this Ich warf lua auf den Redis-Server und schrieb eine saubere Kopie derjenigen, die SCANs auf dem Server erstellt und den Schlüssel und den Wert zurückgibt. Notieren Sie sich dies.

Umgebung

$ python -V
Python 3.7.2

$ redis-cli info | grep redis_version
redis_version:5.0.5

Code

Wenn Sie Hash oder Set verwenden, lesen Sie je nach Bedarf "HSCAN" oder "ZSCAN".

dump.lua


local cr    = KEYS[1]
local num   = KEYS[2]
local match = KEYS[3]

local cr2, keys = unpack(redis.call("SCAN", cr, "MATCH", match, "COUNT", num))

local values = redis.pcall("MGET", unpack(keys))
return {cr2, keys, values}

export.py


#!/usr/bin/env python
import os
import redis
import click

DEFAULT_REDIS_URL = "redis://localhost:6379/3"
DEFAULT_LUA_FILE  = "dump.lua"

def scan_iter(r, lua_script, bulk=2000, match="*"):
    f = r.register_script(lua_script)

    cr = "0"
    while True:
        cr, keys, values = f(keys=[cr, bulk, match])
        if cr == b"0":
            break

        yield from zip(keys, values)


@click.command()
@click.option("--redis-url", envvar="REDIS_URL", default=DEFAULT_REDIS_URL)
@click.option("--lua-file", envvar="LUA_FILE", default=DEFAULT_LUA_FILE, type=click.File("r"))
@click.option("--output", default=os.sys.stdout, type=click.File("w"))
def cmd(redis_url, lua_file, output):
    r = redis.StrictRedis.from_url(redis_url)
    r.ping()

    for k, v in scan_iter(r, lua_file.read()):
        output.write(k.decode("utf-8"))
        output.write("\n")
        output.write("%d" % len(v))
        output.write("\n")


if __name__ == "__main__":
    cmd()

Lauf

$ pip install redis click

Beispieldateneingabe

$ jq -n -r 'range(10000)|"set key\(.) value\(.)"' | redis-cli -n 8

Versuchen Sie zu entleeren

$ ./export.py --redis-url redis://localhost:6379/8

Ende.

Recommended Posts

Entleere den Inhalt der Redis-Datenbank mit Lua
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
Simulation des Inhalts der Brieftasche
Verstehen Sie den Inhalt der sklearn-Pipeline
Siehe den Inhalt von Kumantic Segumantion
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
[Python, Ruby] Selen-Holen Sie sich Webseiteninhalte mit Webdriver
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
Ich habe den Inhalt des Docker-Volumes überprüft
Sie können auch die Kommunikation von DB und Cache mit Curl überprüfen
Richten Sie die Größe der Farbleiste an der Matplotlib aus
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Einstellung, um den Inhalt der Bibliothek mit pytest einzugeben und einen Debug-Test durchzuführen
Die dritte Nacht der Runde mit für
Lesen Sie den gesamten Inhalt von proc / [pid]
Die zweite Nacht der Runde mit für
Zählen Sie die Anzahl der Zeichen mit Echo
Holen Sie sich den Inhalt von Git Diff aus Python
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor
2016 Todai Mathematik mit Python gelöst
Der Inhalt des Python-Tutorials (Kapitel 2) ist in einem Aufzählungszeichen zusammengefasst.
[Hinweis] Exportieren Sie das HTML der Site mit Python.
Erhöhen Sie die Schriftgröße des Diagramms mit matplotlib
Der Inhalt des Python-Tutorials (Kapitel 8) ist in einem Aufzählungszeichen zusammengefasst.
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
Der Inhalt des Python-Tutorials (Kapitel 1) ist in einem Aufzählungszeichen zusammengefasst.
Überprüfen Sie das Datum der Flaggenpflicht mit Python
Der Inhalt des Python-Tutorials (Kapitel 10) ist in einem Aufzählungszeichen zusammengefasst.
Beseitigen Sie die Unannehmlichkeiten von QDock Widget mit PySide
Fordern Sie den Turm von Hanoi mit Wiederholungen + Stapel heraus
Schreiben Sie den Namen des Tags mit dem Namespace in lxml neu
Füllen Sie die Breite des Jupyter-Notizbuchs, um den Browser zu füllen
Automatisieren einfacher Aufgaben mit Python Inhaltsverzeichnis
Über die Entwicklungsinhalte des maschinellen Lernens (Beispiel)
Finden Sie den Tag nach Datum / Uhrzeit heraus
Die Basis der Graphentheorie mit Matplotlib-Animation
Der Inhalt des Python-Tutorials (Kapitel 6) ist in einem Aufzählungszeichen zusammengefasst.
Visualisieren Sie das Verhalten des Sortieralgorithmus mit matplotlib
Konvertieren Sie den Zeichencode der Datei mit Python3
Der Inhalt des Python-Tutorials (Kapitel 3) ist in einem Aufzählungszeichen zusammengefasst.
[Python] Bestimmen Sie den Typ der Iris mit SVM
Erstellen Sie eine Tabelle mit IPython Notebook
Inhalt von __name__
Extrahieren Sie die Tabelle der Bilddateien mit OneDrive & Python
Fügen Sie Attribute von Klassenobjekten mit einer for-Anweisung hinzu
Ganz rechts Koordinaten des Etiketts mit tkinter erstellt
Die Geschichte des Stoppens des Produktionsdienstes mit dem Befehl hostname
Lerne Nim mit Python (ab Anfang des Jahres).
Berechnen Sie die Summe der eindeutigen Werte durch Pandas-Kreuztabellen
Fügen Sie mit Matplotlib Informationen am unteren Rand der Abbildung hinzu
Berechnen Sie den Gesamtwert mehrerer Spalten mit awk
Die Geschichte des Teilens der Pyenv-Umgebung mit mehreren Benutzern
Zerstören Sie den Zwischenausdruck der Sweep-Methode mit Python
Machen Sie LCD-Screenshots mit Python-LEGO Mindstorms
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Sagen Sie die Anzahl der mit COVID-19 infizierten Personen mit Prophet voraus
Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi