我想删除所有密钥。我要把一切都删掉,给我一个空白的数据库。

有没有办法在Redis客户端中做到这一点?


当前回答

使用redis cli:

FLUSHDB–从连接的当前数据库中删除所有密钥。FLUSHOLL–从所有数据库中删除所有密钥。

例如,在shell中:

redis-cli flushall

其他回答

对于任何想知道如何在C#中做到这一点的人来说,这与为Python提供的相同问题的答案是一样的。

我正在使用StackExchange.Risv2.2.88进行dot-net(核心)5项目。我只需要清除集成测试的密钥,我没有在生产中这样做的目的。

我检查了intelligense中可用的内容,我看不到用现有API实现这一点的常用方法。我想这是故意的,是故意的。幸运的是,API确实公开了Execute方法。

我通过执行以下操作进行了测试:

打开了一个命令窗口。我正在使用docker,所以我是通过docker完成的。键入redis cli,启动cli键入KEYS*,它会显示我的所有密钥,以便我可以在执行以下代码之前和之后验证它们是否存在://不要滥用,小心使用var cache=连接多路复用器.Connect(新配置选项{端点={“localhost:6379”}});var db=_cache.GetDatabase();db.Execute(“flushdb”);再次键入KEYS*并查看其为空。

希望这对任何寻找它的人都有帮助。

停止Redis实例。删除RDB文件。启动Redis实例。

我认为有时会停止redis服务器并删除rdb、aof文件确保没有可以重新加载的数据。然后启动redis服务器,现在它是空的。

您可以使用FLUSHDB

e.g

列出数据库:

127.0.0.1:6379> info keyspace
# Keyspace

列出关键字

127.0.0.1:6379> keys *
(empty list or set)

向键添加一个值

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

创建具有两个值的其他键

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

列出键2中的所有值

127.0.0.1:6379> lrange key2 0 -1
1) "2"
2) "1"

做FLUSHDB

127.0.0.1:6379> flushdb
OK

列出密钥和数据库

127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> info keyspace
# Keyspace

FLUSHOLL删除所有现有数据库的所有密钥。FOr Redis版本>4.0,支持FLUSHOLL ASYNC,它在后台线程中运行,不会阻塞服务器https://redis.io/commands/flushall

FLUSHDB-删除所选数据库中的所有密钥。https://redis.io/commands/flushdb

执行操作的时间复杂度将为O(N),其中N是数据库中的键的数量。

redis的响应将是一个简单的字符串“OK”