我需要将键从字符串转换为哈希。所有密钥的名称都在集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
包含许多值时,内存使用量会增长很多。
是否有内存高效的结构可以通过多个键? (特别是strings.forEach(…
似乎效率低下)
如何在每次rdbc.del/rbdc.hset
操作后通知node.js中的垃圾收集器进行清理?
答案 0 :(得分:0)
我不知道node.js的redis驱动程序如何处理这个问题,但如果它们很聪明,他们会使用redis提供的一些游标来遍历结果。这意味着不会在开始时获取所有结果,而是在您访问它们时获取它们。
垃圾收集由V8(node.js的底层JavaScript引擎)处理。有大量关于它如何工作的文档(只搜索“垃圾收集V8”):