我尝试将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都是受欢迎的。任何现有的代码都是受欢迎的。