Py学习  »  Redis

如何解析redis slowlog

user389955 • 1 年前 • 87 次点击  

我尝试将redis slowlog解析为csv格式(逗号、列或空格作为分隔符)的文件,但我不确定如何做到这一点。

如果我跑 redis-cli -h <ip> -p 6379 slowlog get 2 ,我得到以下输出:

1) 1) (integer) 472141
   2) (integer) 1625198930
   3) (integer) 11243
   4) 1) "ZADD"
      2) "key111111"
      3) "16251.8488247"
      4) "abcd"
   5) "1.2.3.4:89"
   6) ""
2) 1) (integer) 37214
   2) (integer) 1525198930
   3) (integer) 1024
   4) 1) "ZADD"
      2) "key2"
      3) "1625.8"
   5) "1.2.3.4:89"
   6) "client-name"

注意:每个日志项的第4)项可能包含不同数量的参数,例如,日志项1)的第4)项有4个参数,而日志项2)的第4)项有3个参数;第6)项可以是类似于客户端名称的字符串,也可以是空的。

如果我使用下面的shell脚本运行命令:

results=$(redis-cli -h <ip> -p $port slowlog get 2)
echo $results

我得到以下输出:

 472141 1625198930 11243 ZADD key111111 16251.8488247 abcd 1.2.3.4:89 37214 1525198930 1024 ZADD key2 1625.8 1.2.3.4:89 client-name

如您所见,命令的输出变成了大量的单词。此外,很难确定哪组单词属于同一个日志条目。我想要的是一个csv文件,比如:

472141 1625198930 11243 ZADD key111111 16251.8488247 abcd 1.2.3.4:89
37214 1525198930 1024 ZADD key2 1625.8 1.2.3.4:89 client-name

我是否可以将redis slowlog解析为cvs文件?任何像python这样的脚本,shell都是受欢迎的。任何现有的代码都是受欢迎的。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132855
 
87 次点击