Kiedy próbuję powyższego, pojawia się następujący błąd (error) LOADING Redis is loading the dataset in memory. Czy możesz podać dlaczego?
Ram Patra
4
@Ramswaroop - zrestartowałeś Redis i obecnie ładuje dane z trwałej pamięci. Gdy ten proces (ładowanie) jest aktywny, nie można manipulować bazą danych. Poczekaj, aż zakończy się, lub skonfiguruj trwałość Redis bez restartu i zrestartuj go (rozpocznie się pusty, więc nie będziesz musiał wykonywać FLUSHALL, gdy będzie gotowy).
Itamar Haber
@ItamarHaber Dzięki za pomoc, ja też doszedłem do tego samego.
Ram Patra
1
@Neo, jeśli nie masz biblioteki klienta Redis w C #, możesz po prostu uruchomić to polecenie, tak jak: (new Process { StartInfo = new ProcessStartInfo { FileName = "redis-cli", Arguments = "flushall", CreateNoWindow = true }}).start();
Christian
2
Użyj -hflagi, aby określić lokalizację serwera redis
Adam F
194
Heads up, który FLUSHALLmoże być przesadą. FLUSHDBto ten, który opróżnia tylko bazę danych. FLUSHALLusunie cały serwer. Jak w każdej bazie danych na serwerze. Ponieważ pytanie dotyczyło opróżnienia bazy danych, myślę, że jest to wystarczająco ważne rozróżnienie, aby zasługiwać na osobną odpowiedź.
+1 ode mnie, pomyślałem, że tak naprawdę jest to lepsza odpowiedź. To prawda, że pytanie PO mówi „wyczyść wszystko”, a następnie „daj mi pustą bazę danych” - niezależnie od tego, co miał na myśli, myślę, że dokonane przez ciebie rozróżnienie jest użyteczne, mówiąc delikatnie.
doug
28
Jak dotąd odpowiedzi są absolutnie poprawne; usuwają wszystkie klucze.
Jeśli jednak chcesz usunąć wszystkie skrypty Lua z instancji Redis, wykonaj następujące czynności:
Nie, zadał jedno pytanie iw ciągu dwóch lat od tamtego czasu zasięg Redisa wzrósł. Pytanie OP dotyczyło w szczególności usuwania kluczy. Odpowiadasz na inne pytanie niż to.
The Real Bill
15
@TheRealBill Musisz pomyśleć o tym, co jest przydatne dla obecnych i przyszłych czytelników SO. Odpowiedzi tutaj nie dotyczyły jużI want everything wiped out and give me a blank database. pytania PO . Imho, mój dodatek jest dobry, co pomogło kilku osobom. Nie krępuj się, oczywiście, właśnie o to chodzi w SO.
Tw Bert
2
Kontekst jest wszystkim, a pierwsze zdanie go ustanawia: „Chcę usunąć wszystkie klucze”. Przepisanie pytania w celu udzielenia innej odpowiedzi nie jest tym, o czym mówiono mi, że SO. Chodzi o zadanie zadanego pytania - stąd flaga moderacji wskazująca, że analizowana odpowiedź odpowiada na inne pytanie. Ale opinie się różnią.
The Real Bill
Jeśli sam uruchamiasz serwer, najszybszym sposobem na wyczyszczenie wszystkiego jest zabicie serwera i zrestartowanie go (przypadkowo to się znalazło)
acutesoftware
18
FLUSHALL
Usuń wszystkie klucze ze wszystkich baz danych
FLUSHDB
Usuń wszystkie klucze z bieżącej bazy danych
SCRIPT FLUSH
Usuń wszystkie skrypty z pamięci podręcznej skryptów.
W naszych bazach danych dotyczących produkcji i przedprodukcji znajdują się tysiące kluczy. Od czasu do czasu musimy usunąć niektóre klucze (przez jakąś maskę), zmodyfikować według niektórych kryteriów itp. Oczywiście nie ma sposobu, aby to zrobić ręcznie z poziomu interfejsu CLI, zwłaszcza mając sharding (512 logicznych dbs w każdym fizycznym).
W tym celu piszę narzędzie klienta Java, które wykonuje całą tę pracę. W przypadku usuwania kluczy narzędzie może być bardzo proste, istnieje tylko jedna klasa:
public class DataCleaner {
public static void main(String args[]) {
String keyPattern = args[0];
String host = args[1];
int port = Integer.valueOf(args[2]);
int dbIndex = Integer.valueOf(args[3]);
Jedis jedis = new Jedis(host, port);
int deletedKeysNumber = 0;
if(dbIndex >= 0){
deletedKeysNumber += deleteDataFromDB(jedis, keyPattern, dbIndex);
} else {
int dbSize = Integer.valueOf(jedis.configGet("databases").get(1));
for(int i = 0; i < dbSize; i++){
deletedKeysNumber += deleteDataFromDB(jedis, keyPattern, i);
}
}
if(deletedKeysNumber == 0) {
System.out.println("There is no keys with key pattern: " + keyPattern + " was found in database with host: " + host);
}
}
private static int deleteDataFromDB(Jedis jedis, String keyPattern, int dbIndex) {
jedis.select(dbIndex);
Set<String> keys = jedis.keys(keyPattern);
for(String key : keys){
jedis.del(key);
System.out.println("The key: " + key + " has been deleted from database index: " + dbIndex);
}
return keys.size();
}
}
Pisanie tego rodzaju narzędzi uważam za bardzo łatwe i nie spędzam więcej niż 5-10 minut.
FLUSHALL Usuwa wszystkie klucze wszystkich istniejących baz danych. Dla wersji Redis> 4.0 obsługiwana jest funkcja FLUSHALL ASYNC, która działa w tle bez blokowania serwera
https://redis.io/commands/flushall
Chociaż Twój post może odpowiedzieć na pytanie, brakuje w nim dokumentacji. Edytuj swoją odpowiedź i podaj ją.
cześć
2
myślę, że czasami zatrzymuję serwer redis i usuwam rdb, aof plików。 upewnij się, że nie można załadować danych. następnie uruchom serwer redis, teraz jest nowy i pusty.
Po uruchomieniu serwera Redis za pomocą: service redis-server start --port 8000lub redis-server.
Służy redis-cli -p 8000do łączenia się z serwerem jako klient w innym terminalu.
Możesz użyć albo
FLUSHDB - Usuń wszystkie klucze aktualnie wybranej bazy danych. To polecenie nigdy nie zawodzi. Złożoność czasowa tej operacji wynosi O (N), gdzie N jest liczbą kluczy w bazie danych.
FLUSHALL - Usuń wszystkie klucze wszystkich istniejących baz danych, nie tylko aktualnie wybranych. To polecenie nigdy nie zawodzi. Złożoność czasowa tej operacji wynosi O (N), gdzie N jest liczbą kluczy we wszystkich istniejących bazach danych.
Sprawdź dokumentację opcji ASYNC dla obu.
Jeśli używasz Redis poprzez interfejs Pythona, użyj tych dwóch funkcji dla tej samej funkcjonalności:
def flushall(self):
"Delete all keys in all databases on the current host"
return self.execute_command('FLUSHALL')
i
def flushdb(self):
"Delete all keys in the current database"
return self.execute_command('FLUSHDB')
Istnieją różne podejścia. Jeśli chcesz to zrobić zdalnie, wydaj flushall do tej instancji, za pomocą narzędzia wiersza polecenia redis-cli lub dowolnego innego narzędzia, np. Telnet, SDK języka programowania. Lub po prostu zaloguj się na tym serwerze, zabij proces, usuń plik dump.rdb i appendonly.aof (wykonaj kopię zapasową przed usunięciem).
Jeśli korzystasz z Javy, to z dokumentacji możesz korzystać z dowolnej z nich w zależności od przypadku użycia.
/**
* Remove all keys from all databases.
*
* @return String simple-string-reply
*/
String flushall();
/**
* Remove all keys asynchronously from all databases.
*
* @return String simple-string-reply
*/
String flushallAsync();
/**
* Remove all keys from the current database.
*
* @return String simple-string-reply
*/
String flushdb();
/**
* Remove all keys asynchronously from the current database.
*
* @return String simple-string-reply
*/
String flushdbAsync();
Kod:
RedisAdvancedClusterCommands syncCommands = // get sync() or async() commands
syncCommands.flushdb();
del *
nie działa. Zwraca 0.Odpowiedzi:
Z redis-cli:
Na przykład w twojej powłoce:
źródło
(error) LOADING Redis is loading the dataset in memory
. Czy możesz podać dlaczego?(new Process { StartInfo = new ProcessStartInfo { FileName = "redis-cli", Arguments = "flushall", CreateNoWindow = true }}).start();
-h
flagi, aby określić lokalizację serwera redisHeads up, który
FLUSHALL
może być przesadą.FLUSHDB
to ten, który opróżnia tylko bazę danych.FLUSHALL
usunie cały serwer. Jak w każdej bazie danych na serwerze. Ponieważ pytanie dotyczyło opróżnienia bazy danych, myślę, że jest to wystarczająco ważne rozróżnienie, aby zasługiwać na osobną odpowiedź.źródło
Jak dotąd odpowiedzi są absolutnie poprawne; usuwają wszystkie klucze.
Jeśli jednak chcesz usunąć wszystkie skrypty Lua z instancji Redis, wykonaj następujące czynności:
PŁUKANIE SKRYPU
PO zadaje dwa pytania; to uzupełnia drugie pytanie ( wszystko wyczyszczone).
źródło
I want everything wiped out and give me a blank database.
pytania PO . Imho, mój dodatek jest dobry, co pomogło kilku osobom. Nie krępuj się, oczywiście, właśnie o to chodzi w SO.FLUSHALL Usuń wszystkie klucze ze wszystkich baz danych
FLUSHDB Usuń wszystkie klucze z bieżącej bazy danych
SCRIPT FLUSH Usuń wszystkie skrypty z pamięci podręcznej skryptów.
źródło
Jeśli używasz klejnotu redis-rb, możesz po prostu zadzwonić:
źródło
Ta metoda działała dla mnie - usuń wszystko z aktualnie podłączonej bazy danych w klastrze Jedis.
źródło
Jeszcze jedna opcja z mojej strony:
W naszych bazach danych dotyczących produkcji i przedprodukcji znajdują się tysiące kluczy. Od czasu do czasu musimy usunąć niektóre klucze (przez jakąś maskę), zmodyfikować według niektórych kryteriów itp. Oczywiście nie ma sposobu, aby to zrobić ręcznie z poziomu interfejsu CLI, zwłaszcza mając sharding (512 logicznych dbs w każdym fizycznym).
W tym celu piszę narzędzie klienta Java, które wykonuje całą tę pracę. W przypadku usuwania kluczy narzędzie może być bardzo proste, istnieje tylko jedna klasa:
Pisanie tego rodzaju narzędzi uważam za bardzo łatwe i nie spędzam więcej niż 5-10 minut.
źródło
FLUSHALL Usuwa wszystkie klucze wszystkich istniejących baz danych. Dla wersji Redis> 4.0 obsługiwana jest funkcja FLUSHALL ASYNC, która działa w tle bez blokowania serwera https://redis.io/commands/flushall
FLUSHDB - usuwa wszystkie klucze z wybranej bazy danych. https://redis.io/commands/flushdb
Złożoność czasowa wykonywania operacji będzie wynosić O (N), gdzie N oznacza liczbę kluczy w bazie danych.
Odpowiedź z redis będzie prostym ciągiem „OK”
źródło
Możesz użyć FLUSHALL, który usunie wszystkie klucze z każdej bazy danych. Gdzie jako FLUSHDB usunie wszystkie klucze z naszej bieżącej bazy danych.
źródło
Użyj,
FLUSHALL ASYNC
jeśli używasz (Redis 4.0.0 lub nowszy)FLUSHALL
.https://redis.io/commands/flushall
Uwaga : wszystko przed wykonaniem
FLUSHALL ASYNC
zostanie eksmitowane. Zmiany wprowadzone podczas wykonywaniaFLUSHALL ASYNC
pozostaną niezmienione.źródło
źródło
Otwórz redis-cli i wpisz:
źródło
myślę, że czasami zatrzymuję serwer redis i usuwam rdb, aof plików。 upewnij się, że nie można załadować danych. następnie uruchom serwer redis, teraz jest nowy i pusty.
źródło
redis-cli -h <host> -p <port> flushall
Usunie wszystkie dane z podłączonego klienta (z hostem i portem)
źródło
Po uruchomieniu serwera Redis za pomocą:
service redis-server start --port 8000
lubredis-server
.Służy
redis-cli -p 8000
do łączenia się z serwerem jako klient w innym terminalu.Możesz użyć albo
Sprawdź dokumentację opcji ASYNC dla obu.
Jeśli używasz Redis poprzez interfejs Pythona, użyj tych dwóch funkcji dla tej samej funkcjonalności:
i
źródło
Twoje pytania dotyczą usuwania całych kluczy z bazy danych. W takim przypadku powinieneś spróbować:
redis-cli
(jeśli działa na porcie 6379), w przeciwnym razie będziesz musiał także podać numer portu.select {Index}
)flushdb
Jeśli chcesz opróżnić klucze we wszystkich bazach danych, powinieneś spróbować
flushall
.źródło
Jedno kliknięcie w FastoRedis / FastoNoSQL
źródło
Możesz użyć
FLUSHDB
na przykład
Lista baz danych:
Lista kluczy
Dodaj jedną wartość do klucza
Utwórz inny klucz z dwiema wartościami
Wyświetl wszystkie wartości w key2
Wykonaj FLUSHDB
Lista kluczy i baz danych
źródło
w Pythonie możesz zastosować następujące podejście
źródło
Lepiej, jeśli możesz mieć RDM (Redis Desktop Manager). Możesz połączyć się z serwerem Redis, tworząc nowe połączenie w RDM.
Po podłączeniu możesz sprawdzić dane na żywo, a także możesz bawić się dowolnym poleceniem redis.
Otwieranie cli w RDM.
1) Kliknij połączenie prawym przyciskiem myszy, zobaczysz opcję konsoli, po prostu kliknij na nią, otworzy się nowe okno konsoli na dole RDM.
Wracając do twojego pytania FLUSHALL jest poleceniem, możesz po prostu wpisać FLUSHALL w redis cli.
Ponadto, jeśli chcesz wiedzieć o dowolnym poleceniu redis i jego prawidłowym użyciu, przejdź do linku poniżej. https://redis.io/commands .
źródło
Istnieją różne podejścia. Jeśli chcesz to zrobić zdalnie, wydaj flushall do tej instancji, za pomocą narzędzia wiersza polecenia redis-cli lub dowolnego innego narzędzia, np. Telnet, SDK języka programowania. Lub po prostu zaloguj się na tym serwerze, zabij proces, usuń plik dump.rdb i appendonly.aof (wykonaj kopię zapasową przed usunięciem).
źródło
Jeśli korzystasz z Javy, to z dokumentacji możesz korzystać z dowolnej z nich w zależności od przypadku użycia.
Kod:
Czytaj więcej: https://github.com/lettuce-io/lettuce-core/wiki/Redis-Cluster
źródło