Instade der Verschiebung Ich möchte alle meine Schlüssel aus einer bestimmten Datenbank in eine andere kopieren. Ist es möglich in redis wenn ja als wie?Kopieren Sie alle Schlüssel von einer Datenbank zu einer anderen in redis
Antwort
Wenn Sie nicht MIGRATE COPY wegen Ihrer redis Version verwenden, können Sie möglicherweise jede Taste einzeln kopieren möchten, welche dauert länger, aber Sie müssen sich nicht bei den Computern selbst anmelden und können Daten von einer Datenbank in eine andere verschieben. Hier ist, wie ich alle Schlüssel aus einer Datenbank in eine andere kopieren (aber ohne Konservierungs TTLS)
#set connection data accordingly
source_host=localhost
source_port=6379
source_db=0
target_host=localhost
target_port=6379
target_db=1
#copy all keys without preserving ttl!
redis-cli keys \* | while read key; do echo "Copying $key"; redis-cli --raw -h $source_host -p $source_port -n $source_db DUMP "$key" | head -c -1|redis-cli -x -h $target_host -p $target_port -n $target_db RESTORE "$key" 0; done
Schlüssel werden nicht overwriten werden würde, denn das ist der Schlüssel löschen, bevor das Kopieren oder die gesamte Datenbank bündig vor dem Start.
Nicht direkt. Ich würde vorschlagen, das immer bequeme redis-rdb-tools-Paket (von Sripathi Krishnan) zu verwenden, um die Daten von einem normalen rdb-Speicherauszug zu extrahieren und es erneut in eine andere Instanz zu schreiben.
Neben Didier Antwort: wenn Sie diese online tun und inkrementell können Sie eine Kombination aus ['SCAN'] (http://redis.io/commands/scan) und [' MIGRATE'] (http://redis.io/commands/migrate) verwenden –
Versuchen dump zuerst alle Schlüssel entleeren und dann zur Wiederherstellung der gleichen
Ich versuche das aber Fehler beim Wiederherstellen in der Anforderung db.Its zeigen den Fehler-Target Key-Name ist beschäftigt. – Subo
Dies liegt möglicherweise daran, dass dieser Schlüsselname bereits in der Zieldatenbank vorhanden ist. Versuchen Sie, eine neue Datenbank zu erstellen, und stellen Sie dann die freigegebenen Schlüssel wieder her. Stellen Sie außerdem sicher, dass die db während der Wiederherstellung ordnungsgemäß umgeschaltet wird und nicht die vorherige ist, was zu einem Konflikt führen kann. –
Soweit ich verstehe, was Sie brauchen Schlüssel aus einem bestimmten DB (z 5) zu einem bestimmten DB sagen 10. kopieren Wenn das der Fall ist, Sie redis Datenbank dumper (https://github.com/r043v/rdd) verwenden können. Obwohl laut Dokumentation hat es einen Schalter (-d) zur Auswahl einer Datenbank für den Betrieb, aber nicht für mich, so was ich getan habe
1.) Bearbeiten Sie die rdd.c Datei und suchen Sie nach Int Haupt (int argc, char argv) Funktion
2.) ändern Sie den DB als pro Ihre Anforderung
3.) kompilieren Sie das src von ** machen
4.) Dump alle Tasten ./rdd -o "save.rdd"
5.) Editieren Sie die rdd.c-Datei erneut und ändern Sie den DB
6.) Stellen Sie erneut
Import7.) durch mit ./rdd "save.rdd" -o es "IP" -p "Port"
Ich weiß, das ist alt einfügen, aber für diejenigen von Ihnen, hierher zu kommen bilde Google :
Ich habe gerade eine Befehlszeilenschnittstelle Dienstprogramm zu Npm und Github veröffentlicht, mit dem Sie Schlüssel kopieren können, die ein bestimmtes Muster (gerade *) von einer Redis-Datenbank zu einer anderen entsprechen.
können Sie das Dienstprogramm finden Sie hier:
redis-cli -a $source_password -p $source_port -h $source_ip keys /*| while read key;
do echo "Copying $key";
redis-cli --raw -a $source_password -h $source_ip -p $source_port -n $dbname DUMP "$key"| head -c -1| redis-cli -x -a $destination_password -h $destination_IP -p $destination_port RESTORE "$key" 0;
Kopiert alle Schlüssel aus der Datenbank Nummer 0 bis Datenbank Nummer 1 auf localhost.
redis-cli --scan | xargs redis-cli migrate localhost 6379 '' 1 0 copy keys
Wenn Sie den gleichen Server/Port Sie einen Timeout-Fehler erhalten, aber die Tasten scheinen erfolgreich sowieso zu kopieren.GitHub Redis issue #1903
Wenn Tasten innerhalb des gleichen redis Motors, dann könnten Sie die internen Gebrauch Befehl MOVE für das (Pipelining für mehr Geschwindigkeit) Migration:
#!/bin/bash
#set connection data accordingly
source_host=localhost
source_port=6379
source_db=4
target_db=0
total=$(redis-cli -n 4 keys \* | sed 's/^/MOVE /g' | sed 's/$/ '$target_db'/g' | wc -c)
#copy all keys without preserving ttl!
time redis-cli -h $source_host -p $source_port -n $source_db keys \* | \
sed 's/^/MOVE /g' | sed 's/$/ 0/g' | \
pv -s $total | \
redis-cli -h $source_host -p $source_port -n $source_db >/dev/null
- 1. Wie alle Schlüssel in Redis
- 2. Kopieren Sie die Datenbank von einer App zu einer anderen App
- 3. Kopieren von Daten aus einer Tabelle in einer Datenbank zur anderen separaten Datenbank
- 4. Kopieren von einer Arbeitsmappe zu einer anderen Zelle Wert
- 5. StackExchange.Redis, wie alle Schlüssel nur auf einer Datenbank abfragen
- 6. So kopieren Sie alle Hive-Tabelle von einer Datenbank in andere Datenbank
- 7. Kopieren nur die Daten von einer Datenbank zum anderen
- 8. Wie bekomme ich alle Schlüssel von Redis mit redis Vorlage
- 9. Kopieren von Daten von einer lokalen Datenbank zu einem entfernten
- 10. Wie erhalten Sie alle Werte aus einer Bitmap in Redis?
- 11. Kopieren einer Zeile zu einer anderen Zeile Wert
- 12. Kopieren von einer XML-Datei in einer anderen - Power
- 13. Daten von einer Datenbank in eine andere Datenbank kopieren
- 14. Redis in PHP: Schlüssel "*"
- 15. So kopieren Sie Ansichten von einer Datenbank in eine andere Datenbank
- 16. eine Tabelle Schlüsselfeld Synchronisieren von einer Datenbank in einer anderen
- 17. Erstellen Sie alle Indizes in einer Datenbank neu
- 18. Wir wollen alle Tabellen kopieren und einfügen von einer Datenbank in eine andere Datenbank mit PHP
- 19. Abrufen einer Liste aller in Redis (Ruby) gespeicherten Schlüssel
- 20. Dumping aller Schlüssel/Wert-Paare in einer Redis db
- 21. Kopieren von Elementen von einer Seite zu einer anderen in Multipage mit VBA in Excel
- 22. Erstellen Sie eine Datenbank aus einer anderen Datenbank?
- 23. Legen Sie alle Zeilen aus einer Tabelle in einer anderen
- 24. Datenbank von einem Benutzer zu einem anderen migrieren/kopieren
- 25. Redis/Holen Sie sich alle Schlüssel & Werte von redis mit Präfix
- 26. Kopieren einer Datei des Inhalts in einer anderen in Python
- 27. So kopieren Sie eine Tabelle von einer MySQL-Datenbank in eine andere MySQL-Datenbank
- 28. Öffnen Sie die Datenbank einer anderen Anwendung?
- 29. Mysql Daten von einer Datenbank in eine andere kopieren WHERE
- 30. Wie kopiere ich Objekte von einer DropDownList zu einer anderen
Für redis-Versionen> 2.6 können Sie den Migrationsbefehl 'redis-cli keys \ * | verwenden während Leseschlüssel; echo "Copying $ key"; abc = "MIGRATE localhost 1234 $ key 0 5000 COPY"; redis-cli "MIGRATE localhost 1234 $ key 0 5000 COPY"; done' –
Ich habe [eine Liste, die auch Authentifizierung und TTL unterstützt] erstellt (https://gist.github.com/nicStuff/ee7feb8eed00174a46db42812545b403). @uditmittal das ist toll, bedenke sowieso, dass MIGRATE die Authentifizierung nicht einmal in der Version 3.2 unterstützt. – reallynice