javascript - 使用前缀/通配符删除 Redis/Node

标签 javascript node.js redis node-redis

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

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

KEYS "web.*"

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

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

非常感谢!

最佳答案

Redis 是单线程的,所以无论如何它都会阻塞。 Scan 以迭代方式返回结果,因此虽然它仍然会阻塞,但只要它返回的是总体结果的一个子集,它就不会阻塞很长时间。
https://redis.io/commands/scan

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

关于javascript - 使用前缀/通配符删除 Redis/Node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40854654/

相关文章:

r - doRedis 在 Ubuntu Linux、R 和 RStudio 中出现奇怪的套接字连接错误

javascript - 从 HTML 模板调用异步函数 (Retunes Observable)

javascript - Mongoose 模块 (NodeJS) 中的 Schema.pre

javascript - 如何在 React Native 中使用服务器实现发布/订阅功能

node.js - 使用 iodocs 没有响应

node.js - 通过net.socket发送文件

javascript - meteor.js - 如何从异步回调中检查值

javascript - emit() 不工作 [Node.js]

javascript - .tolowercase() 只有文本,URL 除外?

redis - 为什么 Redis 具有 Pub/Sub 功能?