试图了解REDIS Monitor命令

时间:2014-12-09 03:03:48

标签: redis monitor

我正在尝试理解Redis中可用的MONITOR命令,以及如何有效地使用来确定应用程序的负载。我不明白的是如何阅读CLI上显示的信息。就像,我知道IP地址前面的数字是'DB Index',但我能从这个数字推断出什么?

MONITOR上提供的示例是:。

$ redis-cli monitor
1339518083.107412 [0 127.0.0.1:60866] "keys" "*"
1339518087.877697 [0 127.0.0.1:60866] "dbsize"
1339518090.420270 [0 127.0.0.1:60866] "set" "x" "6"
1339518096.506257 [0 127.0.0.1:60866] "get" "x"
1339518099.363765 [0 127.0.0.1:60866] "del" "x"
1339518100.544926 [0 127.0.0.1:60866] "get" "x"

我无法理解'1339518083.107412'的重要性。

2 个答案:

答案 0 :(得分:7)

第一部分是seconds.microseconds形式的时间戳。

答案 1 :(得分:0)

第一部分是自1970/1/1(Unix时代)以来的秒数和微秒数。因此,如果要提取时间,请执行以下操作:

new DateTime(1970,1,1).AddSeconds(seconds).AddMilliseconds(microsecods/1000).ToLocalTime()

或者您可以执行以下操作来分析整行:

var match = Regex.Match(line, @"(?<seconds>\d+)\.(?<microsec>\d+) (?<client>\[[\d\.\s:]+?\]) \""(?<command>\w+?)\""");
var sec = long.Parse(match.Groups["seconds"].Value);
var mic = long.Parse(match.Groups["microsec"].Value);
var rest = line.Substring(match.Groups["command"].Index + match.Groups["command"].Length + 1).Trim();
var command = match.Groups["command"].Value,
var dateTime = new DateTime(1970, 1, 1).AddSeconds(sec).AddMilliseconds(mic / 1000).ToLocalTime()