提问者:小点点

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


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

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

第三步之后我还能看到钥匙

只有当我下命令的时候钥匙才会不见


共3个答案

匿名用户

重新启动后会看到这些键,因为启用了RDB或AOF持久性。请参见https://redis.io/topics/persistence.

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

关于如何使用redis-cli将命令发送到所有群集节点,请参阅是否有办法在群集上刷新所有键,以便从数据库中删除主和从的所有键。

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

匿名用户

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

https://redis.io/commands/flushall

匿名用户

感谢您的链接。这些非常有帮助。我能够通过使用-更改我的redis. conf文件来实现结果