如何在node.js中通过管道传递到Redis?

问题描述 投票:12回答:4

我有很多数据要插入(SET \ INCR)到Redis DB,所以我正在通过node.js寻找pipeline \ mass insertion

我在node.js中找不到任何好的示例/ API,因此任何帮助都将非常有用!

node.js redis pipeline node-redis
4个回答
11
投票

是的,我必须同意缺少示例,但是我设法创建了一个流,在该流上我批量发送了几个插入命令。

您应该为redis流安装模块:

npm install redis-stream

这就是您使用流的方式:

var redis = require('redis-stream'),
    client = new redis(6379, '127.0.0.1');

// Open stream
var stream = client.stream();

// Example of setting 10000 records
for(var record = 0; record < 10000; record++) {

    // Command is an array of arguments:
    var command = ['set', 'key' + record, 'value'];  

    // Send command to stream, but parse it before
    stream.redis.write( redis.parse(command) );
}

// Create event when stream is closed
stream.on('close', function () {
    console.log('Completed!');

    // Here you can create stream for reading results or similar
});

// Close the stream after batch insert
stream.end();

此外,您可以根据需要创建为许多流,并可以随时根据需要打开/关闭它们。

有[[几个示例在redis-stream node module的node.js中使用redis流)>


5
投票
在node_redis中,所有命令都已管道化:

2
投票
您可能也想看batch()。用multi()变慢的原因是因为它是事务性的。如果发生故障,将不会执行任何操作。那可能就是您想要的,但是您确实可以选择速度。

0
投票
默认情况下,node_redis,Node.js库在管道中发送命令,并自动选择每个管道将有多少命令[[https://github.com/NodeRedis/node-redis/issues/539#issuecomment-32203325)][1]。因此,您不必为此担心。但是,其他Redis客户端可能默认情况下不使用管道;您需要查看客户端文档以了解如何利用管道。
© www.soinside.com 2019 - 2024. All rights reserved.