我想删除所有密钥。我要把一切都删掉,给我一个空白的数据库。
有没有办法在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将删除当前数据库中的所有密钥。
如果使用(Redis 4.0.0或更高版本),则使用FLUSHOLL ASYNC,否则使用FLUSHALL。
https://redis.io/commands/flushall
注:执行FLUSHOLL ASYNC之前的所有内容都将被逐出。执行FLUSHOLL ASYNC期间所做的更改将不受影响。
如果要清除窗口中的redis:在中查找redis cli
C: \Program Files\Redis并运行FLUSHILL命令。
您可以在python中使用以下方法
def redis_clear_cache(self):
try:
redis_keys = self.redis_client.keys('*')
except Exception as e:
# print('redis_client.keys() raised exception => ' + str(e))
return 1
try:
if len(redis_keys) != 0:
self.redis_client.delete(*redis_keys)
except Exception as e:
# print('redis_client.delete() raised exception => ' + str(e))
return 1
# print("cleared cache")
return 0
使用以下命令启动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')