转换redis密钥时的内存管理

时间:2012-06-15 16:34:44

标签: javascript node.js memory redis

我需要将键从字符串转换为哈希。所有密钥的名称都在集list:of:keys

我目前的实现如下:

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包含许多值时,内存使用量会增长很多。

  1. 是否有内存高效的结构可以通过多个键? (特别是strings.forEach(…似乎效率低下)

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

1 个答案:

答案 0 :(得分:0)

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

  2. 垃圾收集由V8(node.js的底层JavaScript引擎)处理。有大量关于它如何工作的文档(只搜索“垃圾收集V8”):