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

问题描述 投票:0回答:2

我想使用快速过程从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服务来清除密钥,然后再尝试在质量检查服务器上使用?

redis redis-cluster
2个回答
0
投票

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

https://redis.io/commands/flushall


0
投票

重新启动后您会看到密钥,因为启用了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在后台进行删除。这将为每个数据库创建新的哈希映射,而旧的哈希映射将由后台线程逐渐删除(回收内存)。

© www.soinside.com 2019 - 2024. All rights reserved.