redis - 如何从redis集群中删除所有键
问题描述
我想通过使用快速过程从 redis 集群中删除所有键。我知道如何使用“redis-cli FLUSHALL”删除密钥。但是当数据集很大时,这个命令可能会很慢。听说重启redis服务可以清除redis缓存中的所有key。我正在我的本地 Mac 笔记本电脑上测试这个过程。我正在执行以下步骤:-
- 使用示例命令 redis-cli SET mykey1 "Hello" 在我的本地 redis 服务器上设置许多密钥
- 然后重新启动redis服务“brew services restart redis”希望在服务备份时删除所有key
- 然后通过给出“redis-cli KEYS '*'”命令获取密钥
在第 3 步之后我仍然看到密钥
仅当我发出此命令时,密钥才消失-> redis-cli FLUSHALL?如何通过首先在我的 mac 笔记本电脑上本地重新启动 redis 服务来清除密钥,然后我将在 QA 服务器上尝试?
解决方案
重新启动后您会看到密钥,因为启用了 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
在后台执行删除。这将为每个数据库创建新的哈希映射,而旧的哈希映射将由后台线程逐步删除(回收内存)。
推荐阅读
- ios - 如何阻止 objc 代码转换为可选代码
- c++ - C++ 通用指针函数或模板
- c# - C# 中的静态构造函数死锁是否与 ECMA CLI 标准相矛盾?
- reporting-services - 如果组字段小计为零,SSRS 如何隐藏详细信息
- neo4j - 提高查询计数的性能
- python - Python:无论客户端是否连接到它,都在特定时间后关闭套接字
- windows - evntwin evntcmd 和事件查看器
- ios - 处理本地通知点击 Xamarin Forms iOS
- javascript - 如何在 Node.js 服务器上部署 Vue.js 应用程序
- php - Laravel 签名路由在生产中抛出 InvalidSignatureException