我有大量带有前缀的简单键要从Redis中删除,我正在尝试找到在Lua脚本的事务中自动执行此操作的最有效方法:
建议采用以下哪种方式进行?我是否可以使用其他方法-例如在哈希中使用哈希和多个键?在Redis集群的情况下,上述任何问题都可以吗?
答案 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问题。