如何从redis集群中删除所有键

How to delete all keys from redis cluster

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

  1. 使用示例命令 redis-cli SET mykey1 "Hello"
  2. 在我的本地 redis 服务器上设置许多键
  3. 然后重新启动redis服务"brew services restart redis"希望在服务备份时删除所有key
  4. 然后通过 "redis-cli KEYS '*'" 命令获取密钥

我在第 3 步后仍能看到密钥

仅当我发出此命令时密钥才消失--> redis-cli FLUSHALL?我如何通过首先在我的 mac 笔记本电脑上本地重新启动 redis 服务来清除密钥,然后我将在 QA 服务器上尝试?

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

https://redis.io/commands/flushall

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

RDB 默认启用。要禁用持久性,您需要编辑 redis.conf 或以 redis-server --save "" --appendonly no

开始

请参阅了解如何使用 redis-cli 将命令发送到所有集群节点。

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

感谢您提供链接。这些非常有帮助。我能够通过使用 --> redis-server --save "" 和 --appendonly no 更改我的 redis.conf 文件来实现结果。所以在这些更改之后,当我现在重新启动 redis 服务时,什么都没有保存。