Redis / Node删除前缀/通配符

时间:2016-11-28 22:29:41

标签: javascript node.js redis node-redis

我需要使用NodeJS删除Redis中与前缀/通配符匹配的所有记录。我正在使用此软件包:https://github.com/NodeRedis/node_redis

我已经看到了几种可用于删除具有前缀和通配符的Redis密钥的解决方案,例如

KEYS "web.*"

但是,所有这些解决方案都依赖于使用KEYS命令,因为它锁定了服务器而不适合生产。我认为正确的解决方案涉及SCAN命令(也许还有其他命令),但我并不完全理解它是如何工作的。

我正在寻找一个简单的JS函数,它允许我传入包含前缀和通配符的字符串,例如"网络*"和所有"键"匹配的密钥将被删除。

非常感谢!

1 个答案:

答案 0 :(得分:0)

Redis是单线程的,因此它无论如何都会阻塞。扫描以迭代的方式返回结果,因此当它仍然阻塞时,它不会阻塞,只要它返回整个结果的子集。
https://redis.io/commands/scan

这里有一个扫描解决方案可能会或可能不会对您有用,具体取决于您是否需要它是原子的。 How to atomically delete keys matching a pattern using Redis