我需要使用NodeJS删除Redis中与前缀/通配符匹配的所有记录。我正在使用此软件包:https://github.com/NodeRedis/node_redis
我已经看到了几种可用于删除具有前缀和通配符的Redis密钥的解决方案,例如
KEYS "web.*"
但是,所有这些解决方案都依赖于使用KEYS
命令,因为它锁定了服务器而不适合生产。我认为正确的解决方案涉及SCAN
命令(也许还有其他命令),但我并不完全理解它是如何工作的。
我正在寻找一个简单的JS函数,它允许我传入包含前缀和通配符的字符串,例如"网络*"和所有"键"匹配的密钥将被删除。
非常感谢!
答案 0 :(得分:0)
Redis是单线程的,因此它无论如何都会阻塞。扫描以迭代的方式返回结果,因此当它仍然阻塞时,它不会阻塞,只要它返回整个结果的子集。
https://redis.io/commands/scan
这里有一个扫描解决方案可能会或可能不会对您有用,具体取决于您是否需要它是原子的。 How to atomically delete keys matching a pattern using Redis