Node.js 节点JS批处理获取Redis密钥

Node.js 节点JS批处理获取Redis密钥,node.js,caching,redis,Node.js,Caching,Redis,我想使用批处理请求,一次获取大量存储在Redis上的键/值。 我正在使用NodeJS redis客户端。其思想是异步对多个键发出get请求,有什么方法可以做到这一点吗? 我检查了node js Redis client中的批处理函数,据我所知,如果希望在异步模式下一次获取散列的所有元素,而不是不同键的数据,那么批处理函数非常有用 我试图做的是读取所有表,根据值的属性(时间戳)选择特定的键/值。您正在查找的MGET,根据: 如果您正在使用该软件包,它应该如下所示: client.mget(["ke

我想使用批处理请求,一次获取大量存储在Redis上的键/值。 我正在使用NodeJS redis客户端。其思想是异步对多个键发出get请求,有什么方法可以做到这一点吗?
我检查了node js Redis client中的批处理函数,据我所知,如果希望在异步模式下一次获取散列的所有元素,而不是不同键的数据,那么批处理函数非常有用


我试图做的是读取所有表,根据值的属性(时间戳)选择特定的键/值。

您正在查找的
MGET
,根据:

如果您正在使用该软件包,它应该如下所示:

client.mget(["key1", "key2", "nonexisting"], (err, val) => {
  console.log(val); //["Hello", "World", null]
});

不完全是这样,我要做的是读取所有表,根据值的属性(时间戳)选择特定的键/值@Tar您必须使用
keys*
或重复
SCAN
调用,然后执行
MGET
。我认为Redis不支持对所有值应用逻辑并选择通过测试的值-这是您在代码或db查询中所做的事情。是的,逻辑将在代码中完成,我只是查询Redis以获取数据,可以异步扫描多个键吗?比如说一次扫描10个键?@Tar所有redis命令都必须是异步的。每次
扫描
都需要上一次扫描返回的游标,因此我不相信您可以通过这种方式轻松完成批量并行处理。如果您希望尽可能减少所需时间,则使用一个具有正确模式的
,然后使用
MGET
将占用所有数据到达流程的最短行程时间,但在处理过程中会占用更多内存,并且会在redis服务器获取所有匹配密钥时阻塞redis服务器。@Tar with SCAN您需要向redis发出更多单独的命令,但您和服务器都可以一次处理一个数据块,这将导致更低的处理峰值,但可能需要更多时间
client.mget(["key1", "key2", "nonexisting"], (err, val) => {
  console.log(val); //["Hello", "World", null]
});