【问题标题】:Memory management when converting redis keys转换 redis 键时的内存管理
【发布时间】:2012-06-15 16:34:44
【问题描述】:

我需要将键从字符串类型转换为哈希。所有键的名称都在集合中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. 如何通知 node.js 中的垃圾收集器在每次 rdbc.del/rbdc.hset 操作后进行清理?

【问题讨论】:

  • 欢迎来到 Stackoverflow。你在写第一个问题方面做得很好。

标签: javascript node.js memory redis


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

  2. 垃圾收集由 V8(node.js 的底层 JavaScript 引擎)处理,有大量关于其工作原理的文档(只需搜索“Garbage Collection V8”):

【讨论】:

  • 谢谢!我将阅读垃圾收集并尝试保持我的字符串数组小。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-19
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 2011-01-25
  • 1970-01-01
  • 2018-10-27
相关资源
最近更新 更多