如何删除Redis中的所有内容?

我想删除所有的密钥。 我希望一切都消失了,给我一个空白的数据库。

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

使用redis-cli:

  • FLUSHDB – 从连接的CURRENT数据库中删除数据。
  • FLUSHALL – 从所有数据库中删除数据。

Redis文档:

  • flushdb
  • flushall

例如,在你的shell中:

 redis-cli flushall 

抬头, FLUSHALL可能会矫枉过正。 FLUSHDB是只刷新数据库的FLUSHDBFLUSHALL将清除整个服务器。 就像服务器上的每个数据库一样。 由于这个问题是关于冲洗一个数据库,我认为这是一个足够重要的区别,值得单独的答案。

迄今为止的答案是绝对正确的。 他们删除所有的密钥。

但是,如果您还想从Redis实例中删除所有Lua脚本,则应遵循以下步骤:

脚本刷新

选举委员会提出两个问题; 这完成了第二个问题(抹去的一切 )。

如果你使用的是redis-rb gem,那么你可以直接调用:

 your_redis_client.flushdb 

FLUSHALL删除所有数据库中的所有密钥

FLUSHDB从当前数据库中删除所有密钥

SCRIPT FLUSH从脚本caching中删除所有脚本。

这个方法适用于我 – 删除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()); } } } 

我的另一个select:

在我们的生产和预生产数据库中有数千个密钥。 有时候我们需要删除一些密钥(通过掩码),修改一些标准等。当然,没有办法从CLI手动执行,特别是分片(每个物理中有512个逻辑数据块)。

为此,我编写了Java客户端工具来完成所有这些工作。 在删除键的情况下,实用程序可以非常简单,只有一个类:

 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(); } } 

写这样的工具,我觉得很容易,花费不了多less,然后5-10分钟。

你可以使用FLUSHALL这将删除你的每个数据库中的所有密钥。 FLUSHDB将从我们当前的数据库中删除所有密钥。

FLUSHALL删除所有存在的数据库的所有键。 如果Redis的版本大于4.0,则支持FLUSHALL ASYNC,后台线程运行在不阻止服务器的情况下https://redis.io/commands/flushall

FLUSHDB – 删除选定数据库中的所有键。 https://redis.io/commands/flushdb

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

来自redis的响应将是一个简单的string“OK”

如果使用(Redis 4.0.0或更高版本),则使用FLUSHALL ASYNC FLUSHALL

https://redis.io/commands/flushall

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

  1. 停止Redis实例。
  2. 删除RDB文件。
  3. 启动Redis实例。

redis-cli -h <host> -p <port> flushall

它将删除客户端连接的所有数据(主机和端口)