我想删除所有密钥。我要把一切都删掉,给我一个空白的数据库。
有没有办法在Redis客户端中做到这一点?
我想删除所有密钥。我要把一切都删掉,给我一个空白的数据库。
有没有办法在Redis客户端中做到这一点?
当前回答
我认为有时会停止redis服务器并删除rdb、aof文件确保没有可以重新加载的数据。然后启动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());
}
}
}
如果您正在使用redis-rb-gem,那么您可以简单地调用:
your_redis_client.flushdb
如果使用(Redis 4.0.0或更高版本),则使用FLUSHOLL ASYNC,否则使用FLUSHALL。
https://redis.io/commands/flushall
注:执行FLUSHOLL ASYNC之前的所有内容都将被逐出。执行FLUSHOLL ASYNC期间所做的更改将不受影响。
您可以使用FLUSHDB
e.g
列出数据库:
127.0.0.1:6379> info keyspace
# Keyspace
列出关键字
127.0.0.1:6379> keys *
(empty list or set)
向键添加一个值
127.0.0.1:6379> lpush key1 1
(integer) 1
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
创建具有两个值的其他键
127.0.0.1:6379> lpush key2 1
(integer) 1
127.0.0.1:6379> lpush key2 2
(integer) 2
127.0.0.1:6379> keys *
1) "key1"
2) "key2"
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=2,expires=0,avg_ttl=0
列出键2中的所有值
127.0.0.1:6379> lrange key2 0 -1
1) "2"
2) "1"
做FLUSHDB
127.0.0.1:6379> flushdb
OK
列出密钥和数据库
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> info keyspace
# Keyspace
警惕FLUSHOLL可能过度使用。FLUSHDB仅用于刷新数据库。FLUSHOLL将清除整个服务器。就像服务器上的每个数据库一样。由于问题是关于刷新数据库,我认为这是一个足够重要的区别,值得单独回答。