Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 转换redis密钥时的内存管理_Javascript_Node.js_Memory_Redis - Fatal编程技术网

Javascript 转换redis密钥时的内存管理

Javascript 转换redis密钥时的内存管理,javascript,node.js,memory,redis,Javascript,Node.js,Memory,Redis,我需要将键从类型字符串转换为哈希。所有钥匙的名称都在set钥匙列表中 我当前的实现如下所示: var rdbc = require("redis").createClient(6379, '127.0.0.1'); rdbc.smembers("list:of:keys", function(err, strings){ strings.forEach(function(string, index, strings){ rdbc.get(string, function(

我需要将键从类型字符串转换为哈希。所有钥匙的名称都在set
钥匙列表中

我当前的实现如下所示:

var rdbc = require("redis").createClient(6379, '127.0.0.1');
rdbc.smembers("list:of:keys", function(err, strings){
    strings.forEach(function(string, index, strings){
        rdbc.get(string, function(err, result){
            rdbc.del(string);
            rdbc.hset(string, "foo", result);
        });
    });
});
我的尝试奏效了。但是当
list:of:keys
包含许多值时,内存使用量会增加很多

  • 是否有内存效率高的结构来处理多个键?(尤其是
    strings.forEach(…
    似乎效率低下)

  • 如何在每次
    rdbc.del/rbdc.hset
    操作后通知node.js中的垃圾收集器进行清理

  • 我不知道node.js的redis驱动程序是如何处理这个问题的,但是如果他们很聪明的话,他们会使用redis提供的一些游标来循环遍历结果。这意味着他们不会在开始时获取所有结果,而是在您访问它们时获取它们

  • 垃圾收集由V8(node.js的底层JavaScript引擎)处理。关于它的工作原理有很多文档(只需搜索“垃圾收集V8”):


  • 欢迎使用Stackoverflow。您在编写第一个问题时做得很好。谢谢!我将阅读垃圾收集,并尽量保持字符串数组的小。