我需要使用nodejs删除redis中与前缀/通配符匹配的所有记录。我正在使用此软件包:https://github.com/NodeRedis/node_redis
我已经看到了几种可用于删除具有前缀和通配符的redis键的解决方案,例如。

KEYS "web.*"

但是,所有这些解决方案都依赖于使用KEYS命令,该命令不适合生产,因为它会锁定服务器。我相信正确的解决方案涉及SCAN命令(可能还有其他命令),但我不完全理解它是如何工作的。
我正在寻找一个简单的js函数,它允许我传入一个包含前缀和通配符的字符串,例如“web.*”,所有匹配的键都将被删除。
非常感谢!

最佳答案

redis是单线程的,所以无论如何它都会阻塞。scan以迭代的方式返回结果,因此当它仍然阻塞时,它不会阻塞多长时间,因为它返回的是整个结果的子集。
https://redis.io/commands/scan
这里有一个扫描解决方案,可能对你有用,也可能不有用,这取决于你是否需要它是原子的。How to atomically delete keys matching a pattern using Redis

07-24 09:31