我想使用快速过程从Redis集群中删除所有密钥。我知道如何使用“ redis-cli FLUSHALL”删除密钥。但是,当数据集很大时,此命令可能会很慢。听说可以通过重新启动Redis服务从Redis缓存中清除所有密钥。我正在本地Mac笔记本电脑上测试此过程。我正在执行以下步骤:-
在第3步之后我仍然看到按键
仅当我发出此命令时,按键才消失-> redis-cli FLUSHALL?如何先通过在Mac笔记本电脑上本地重新启动Redis服务来清除密钥,然后再尝试在质量检查服务器上使用?
答案 0 :(得分:1)
由于启用了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
在后台进行删除。这将为每个数据库创建新的哈希映射,而旧的哈希映射将由后台线程逐渐删除(回收内存)。
答案 1 :(得分:0)
在redis 4.0及更高版本中,引入了FLUSHALL ASYNC命令,以一种非阻塞方式删除所有键的方法。这样可以解决您的问题吗?
答案 2 :(得分:0)
谢谢您的链接。这些非常有帮助。我可以通过使用-> redis-server --save“”和--appendonly no对我的redis.conf文件进行更改来获得结果。因此,在进行了这些更改之后,当我现在重新启动redis服务时,将一无所获。