我想删除所有密钥。我要把一切都删掉,给我一个空白的数据库。
有没有办法在Redis客户端中做到这一点?
我想删除所有密钥。我要把一切都删掉,给我一个空白的数据库。
有没有办法在Redis客户端中做到这一点?
当前回答
这个方法对我有效——删除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仅用于刷新数据库。FLUSHOLL将清除整个服务器。就像服务器上的每个数据库一样。由于问题是关于刷新数据库,我认为这是一个足够重要的区别,值得单独回答。
对于任何想知道如何在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*并查看其为空。
希望这对任何寻找它的人都有帮助。
你可以在航站楼使用flushhall
redis-cli> flushall
如果使用(Redis 4.0.0或更高版本),则使用FLUSHOLL ASYNC,否则使用FLUSHALL。
https://redis.io/commands/flushall
注:执行FLUSHOLL ASYNC之前的所有内容都将被逐出。执行FLUSHOLL ASYNC期间所做的更改将不受影响。
如果您使用的是Java,那么从文档中可以根据您的用例使用其中的任何一个。
/**
* 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();
代码:
RedisAdvancedClusterCommands syncCommands = // get sync() or async() commands
syncCommands.flushdb();
阅读更多信息:https://github.com/lettuce-io/lettuce-core/wiki/Redis-Cluster