Jav*_*ier 1131
使用redis-cli:
Redis文档:
例如,在你的shell中:
redis-cli flushall
Run Code Online (Sandbox Code Playgroud)
The*_*ill 188
抬头FLUSHALL
可能有点矫枉过正.FLUSHDB
是仅刷新数据库的那个.FLUSHALL
将消灭整个服务器.与服务器上的每个数据库一样.由于问题是关于刷新数据库,我认为这是一个非常重要的区别,值得一个单独的答案.
Tw *_*ert 27
到目前为止答案绝对正确; 他们删除所有密钥.
但是,如果您还想从Redis实例中删除所有Lua脚本,则应遵循以下方法:
OP提出两个问题; 这完成了第二个问题(一切都被抹去).
Ger*_*Ger 15
如果您使用的是redis-rb gem,那么您只需调用:
your_redis_client.flushdb
Run Code Online (Sandbox Code Playgroud)
Kai*_*dul 11
这种方法对我有用 - 删除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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
我方的另一个选择:
在我们的生产和预生产数据库中,有数千个密钥.我们需要不时删除一些键(通过某些掩码),按某些标准修改等等.当然,没有办法从CLI手动执行,特别是有分片(每个物理中有512个逻辑dbs).
为此,我编写了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();
}
}
Run Code Online (Sandbox Code Playgroud)
写这样的工具我觉得很容易,花费不超过5-10分钟.
FLUSHALL删除所有现有数据库的所有密钥.FOr Redis版本> 4.0,支持FLUSHALL ASYNC,它在后台线程中运行,不会阻塞服务器 https://redis.io/commands/flushall
FLUSHDB - 删除所选数据库中的所有密钥. https://redis.io/commands/flushdb
执行操作的时间复杂度将是O(N),其中N是数据库中的密钥数.
来自redis的响应将是一个简单的字符串"OK"
使用FLUSHALL ASYNC
if using (Redis 4.0.0 or later) else FLUSHALL
。
https://redis.io/commands/flushall
注意:执行之前的所有内容都FLUSHALL ASYNC
将被驱逐。执行期间所做的更改FLUSHALL ASYNC
将不受影响。
归档时间: |
|
查看次数: |
386098 次 |
最近记录: |