Javascript 转换redis密钥时的内存管理
我需要将键从类型字符串转换为哈希。所有钥匙的名称都在setJavascript 转换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(
钥匙列表中
我当前的实现如下所示:
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。您在编写第一个问题时做得很好。谢谢!我将阅读垃圾收集,并尽量保持字符串数组的小。