【问题标题】:How to delete all keys from redis cluster如何从redis集群中删除所有键
【发布时间】:2020-05-29 17:54:52
【问题描述】:

我想使用快速进程从 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 服务器上尝试?

【问题讨论】:

    标签: redis redis-cluster


    【解决方案1】:

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

    https://redis.io/commands/flushall

    【讨论】:

      【解决方案2】:

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

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

      请参阅Is there a way to flushall on a cluster so all keys from master and slaves are deleted from the db,了解如何使用 redis-cli 向所有集群节点发送命令。

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2020-12-09
          • 1970-01-01
          • 2020-01-01
          • 2018-04-18
          • 2019-05-11
          • 1970-01-01
          • 2018-07-17
          • 2018-08-09
          • 1970-01-01
          相关资源
          最近更新 更多