如何从Redis集群中删除所有密钥

时间:2020-02-13 22:59:03

标签: redis redis-cluster

我想使用快速过程从Redis集群中删除所有密钥。我知道如何使用“ redis-cli FLUSHALL”删除密钥。但是,当数据集很大时,此命令可能会很慢。听说可以通过重新启动Redis服务从Redis缓存中清除所有密钥。我正在本地Mac笔记本电脑上测试此过程。我正在执行以下步骤:-

  1. 使用示例命令redis-cli SET mykey1“ Hello”在本地Redis服务器上设置许多密钥
  2. 然后重新启动redis服务“ brew services restart redis”,以期在备份服务时希望删除所有密钥
  3. 然后通过提供“ redis-cli KEYS'*'”命令来获取密钥

在第3步之后我仍然看到按键

仅当我发出此命令时,按键才消失-> redis-cli FLUSHALL?如何先通过在Mac笔记本电脑上本地重新启动Redis服务来清除密钥,然后再尝试在质量检查服务器上使用?

3 个答案:

答案 0 :(得分:1)

由于启用了RDB或AOF持久性,因此重启后您会看到密钥。参见https://redis.io/topics/persistence

RDB默认情况下处于启用状态。要禁用持久性,您需要编辑redis.conf或以redis-server --save "" --appendonly no

开头

有关如何使用redis-cli将命令发送到所有群集节点的信息,请参见Is there a way to flushall on a cluster so all keys from master and slaves are deleted from the db

如dizzyf所示,使用FLUSHALL ASYNC在后​​台进行删除。这将为每个数据库创建新的哈希映射,而旧的哈希映射将由后台线程逐渐删除(回收内存)。

答案 1 :(得分:0)

在redis 4.0及更高版本中,引入了FLUSHALL ASYNC命令,以一种非阻塞方式删除所有键的方法。这样可以解决您的问题吗?

https://redis.io/commands/flushall

答案 2 :(得分:0)

谢谢您的链接。这些非常有帮助。我可以通过使用-> redis-server --save“”和--appendonly no对我的redis.conf文件进行更改来获得结果。因此,在进行了这些更改之后,当我现在重新启动redis服务时,将一无所获。

相关问题