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

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


当前回答

使用以下命令启动Redis服务器后:service Redis server start--port 8000或Redis server。

使用redis cli-p 8000在不同的终端中作为客户端连接到服务器。

您可以使用

FLUSHDB-删除当前选定DB的所有键。此命令从未失败。此操作的时间复杂度为O(N),N是数据库中的密钥数。FLUSHOLL-删除所有现有数据库的所有键,而不仅仅是当前选定的键。此命令从未失败。此操作的时间复杂度为O(N),N是所有现有数据库中的密钥数。

检查ASYNC选项的文档。

如果您通过其python接口使用Redis,请使用以下两个函数实现相同的功能:

def flushall(self):
    "Delete all keys in all databases on the current host"
    return self.execute_command('FLUSHALL')

and

def flushdb(self):
    "Delete all keys in the current database"
    return self.execute_command('FLUSHDB')

其他回答

这个方法对我有效——删除Jedis集群上当前连接的所有数据库。

public static void resetRedis() {
    jedisCluster = RedisManager.getJedis(); // your JedisCluster instance

    for (JedisPool pool : jedisCluster.getClusterNodes().values()) {

        try (Jedis jedis = pool.getResource()) {
            jedis.flushAll();
        }
        catch (Exception ex){
            System.out.println(ex.getMessage());
        }
    }

}

您可以使用FLUSHOLL从每个数据库中删除所有密钥。其中,FLUSHDB将删除当前数据库中的所有密钥。

你可以在航站楼使用flushhall

redis-cli> flushall

使用redis cli:

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

例如,在shell中:

redis-cli flushall

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

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

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

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