我想删除所有密钥。我要把一切都删掉,给我一个空白的数据库。
有没有办法在Redis客户端中做到这一点?
我想删除所有密钥。我要把一切都删掉,给我一个空白的数据库。
有没有办法在Redis客户端中做到这一点?
当前回答
如果可以使用RDM(Redis桌面管理器),效果会更好。您可以通过在RDM中创建新连接来连接到redis服务器。
连接后,您可以检查实时数据,也可以使用任何redis命令进行游戏。
在RDM中打开cli。
1) 右键单击连接,您将看到一个控制台选项,只需单击它,RDM底部将打开一个新的控制台窗口。
回到您的问题FLUSHOLL是命令,您只需在redis-cli中键入FLUSHALL即可。
此外,如果您想了解任何redis命令及其正确用法,请访问下面的链接。https://redis.io/commands.
其他回答
停止Redis实例。删除RDB文件。启动Redis实例。
您的问题似乎是关于删除数据库中的所有密钥。在这种情况下,您应该尝试:
连接到redis。您可以使用命令redis-cli(如果在端口6379上运行),否则还必须指定端口号。选择数据库(命令Select{Index})执行命令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());
}
}
}
打开redis cli并键入:
FLUSHALL
我还有一个选择:
在我们的生产和预生产数据库中,有数千个密钥。有时我们需要删除一些键(通过一些掩码),根据一些条件进行修改。
为此,我编写了完成所有这些工作的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();
}
}
我觉得写这样的工具很容易,花费不超过5-10分钟。