【发布时间】:2018-11-01 15:34:25
【问题描述】:
我正在使用node_redis客户端,我想监控Redis当前使用的内存量:
const redis = require('redis');
const redisClient = redis.createClient();
setInterval(() => {
// add much data to redis, then:
console.log(redisClient.server_info.used_memory);
}, 1000);
这会在每个间隔记录相同数量的内存。但是,如果我使用 redis-cli "info" 命令,我可以看到内存在增加。
我想出的唯一解决方案是每次我想检查内存时都创建一个新客户端:
const redis = require('redis');
setInterval(() => {
// add much data to redis, then create new client to watch memory:
const redisClient = redis.createClient();
console.log(redisClient.server_info.used_memory);
redisClient.quit();
}, 1000);
不过,这感觉不是正确的做法。有没有一种方法可以“更新”used_memory 信息而无需每次都创建新客户端?
【问题讨论】:
-
你试过打电话给
redisClient.info()吗? -
redisClient.info()只返回true -
这是一个异步调用。您可以像其他调用一样使用它,例如
redisClient.info(function(err, res) { console.log(res); });. -
啊,是的,我现在在node_redis的源代码中看到了。但是,
res只是一个包含与 redis-cli "info" 命令相同的信息的巨大字符串。不知道如何从该字符串访问“used_memory”的值。我可以试试正则表达式... -
好吧,你必须解析它:)
标签: node.js redis node-redis