删除Redis中的大量键

时间:2019-08-27 13:17:40

标签: redis

我有大量带有前缀的简单键要从Redis中删除,我正在尝试找到在Lua脚本的事务中自动执行此操作的最有效方法:

  1. 使用SCAN和DEL键进行迭代吗?
  2. 使用SCAN和EXPIRE迭代每个密钥吗?
  3. 使用SCAN和UNLINK键进行迭代吗?

建议采用以下哪种方式进行?我是否可以使用其他方法-例如在哈希中使用哈希和多个键?在Redis集群的情况下,上述任何问题都可以吗?

3 个答案:

答案 0 :(得分:1)

我建议与unlink一起使用如下所示的批处理,它将以有效的方式清除内存。我不建议到期,因为redis在1秒内会删除10次(此默认配置)以删除过期的密钥,但这可能不是有效的方法。

redis-cli --scan --pattern 'prefix:*' | xargs -L 1000 redis-cli unlink

答案 1 :(得分:0)

必须通过KEYS数组显式地提供Redis Lua脚本及其所涉及的所有键名称。这三种方法都违反了该原则,因为它们使用SCAN来获取密钥名称。

答案 2 :(得分:0)

如果键是简单的字符串,则可以将前缀组织在散列中,并将键作为名称/值对。

然后,删除整个哈希值。

PS:是的,您必须重写所有读取的查询,但是对性能的影响应该忽略不计吗? PS2:无法解决集群Redis问题。