首页 > 解决方案 > 如何从redis集群中删除所有键

问题描述

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

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

在第 3 步之后我仍然看到密钥

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

标签: redisredis-cluster

解决方案


重新启动后您会看到密钥,因为启用了 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,以便从数据库中删除来自主从属的所有密钥。

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


推荐阅读