Ich möchte alle Schlüssel löschen. Ich möchte, dass alles gelöscht wird und ich eine leere Datenbank habe.
Gibt es eine Möglichkeit, dies zu tun in Redis Kunde?
Ich möchte alle Schlüssel löschen. Ich möchte, dass alles gelöscht wird und ich eine leere Datenbank habe.
Gibt es eine Möglichkeit, dies zu tun in Redis Kunde?
Sie können verwenden FLUSHDB
z.B.
Datenbanken auflisten:
127.0.0.1:6379> info keyspace
# Keyspace
Tasten auflisten
127.0.0.1:6379> keys *
(empty list or set)
Einen Wert zu einem Schlüssel hinzufügen
127.0.0.1:6379> lpush key1 1
(integer) 1
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
Anderen Schlüssel mit zwei Werten erstellen
127.0.0.1:6379> lpush key2 1
(integer) 1
127.0.0.1:6379> lpush key2 2
(integer) 2
127.0.0.1:6379> keys *
1) "key1"
2) "key2"
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=2,expires=0,avg_ttl=0
Alle Werte in Schlüssel2 auflisten
127.0.0.1:6379> lrange key2 0 -1
1) "2"
2) "1"
Do FLUSHDB
127.0.0.1:6379> flushdb
OK
Schlüssel und Datenbanken auflisten
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> info keyspace
# Keyspace
Sie können folgenden Ansatz in Python verwenden
def redis_clear_cache(self):
try:
redis_keys = self.redis_client.keys('*')
except Exception as e:
# print('redis_client.keys() raised exception => ' + str(e))
return 1
try:
if len(redis_keys) != 0:
self.redis_client.delete(*redis_keys)
except Exception as e:
# print('redis_client.delete() raised exception => ' + str(e))
return 1
# print("cleared cache")
return 0
Das funktioniert bei mir: redis-cli KEYS \* | xargs --max-procs=16 -L 100 redis-cli DEL
Es listet alle Keys in redis auf und übergibt sie dann mit xargs an redis-cli DEL, wobei es maximal 100 Keys pro Befehl verwendet, aber 16 Befehle gleichzeitig ausführt. Es ist sehr schnell und nützlich, wenn es aus Sicherheitsgründen kein FLUSHDB oder FLUSHALL gibt, zum Beispiel bei der Verwendung von Redis von Bitnami in Docker oder Kubernetes. Außerdem erfordert es keine zusätzliche Programmiersprache und es ist nur eine Zeile.
Ihre Frage scheint sich auf das Löschen von ganzen Schlüsseln in einer Datenbank zu beziehen. In diesem Fall sollten Sie es versuchen:
redis-cli
(wenn es über Port 6379 läuft), andernfalls müssen Sie auch die Portnummer angeben.select {Index}
)flushdb
Wenn Sie Schlüssel in allen Datenbanken spülen wollen, sollten Sie versuchen flushall
.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.