Redis的query分析小工具 redis-faina

openkk 12年前

redis-faina 是由Instagram 开发并开源的一个Redis 查询分析小工具。Instagram团队曾经使用PGFouine 来作为其PostgreSQL的查询分析工具,他们觉得Redis也需要一个类似的工具来进行query分析工作,于是开发了redis-faina

redis-faina 是通过Redis的MONITOR命令来实现的,通过对在Redis上执行的query进行监控,统计出一段时间的query特性。

下面就是其使用方法简介:

# 可以通过管道从stdin读取N条命令  redis-cli -p 6490 MONITOR | head -n <NUMBER OF LINES TO ANALYZE> | ./redis-faina.py    # 也可以从一个文件中读取N条命令  redis-cli -p 6490 MONITOR | head -n <...> > /tmp/outfile.txt  ./redis-faina.py /tmp/outfile.txt
其输出结果如下:
Overall Stats  ========================================  Lines Processed     117773  Commands/Sec        11483.44    Top Prefixes(按key前缀统计)  ========================================  friendlist          69945  followedbycounter   25419  followingcounter    10139  recentcomments      3276  queued              7    Top Keys(操作最频繁的key)  ========================================  friendlist:zzz:1:2     534  followingcount:zzz     227  friendlist:zxz:1:2     167  friendlist:xzz:1:2     165  friendlist:yzz:1:2     160  friendlist:gzz:1:2     160  friendlist:zdz:1:2     160  friendlist:zpz:1:2     156    Top Commands(执行最多的命令)  ========================================  SISMEMBER   59545  HGET        27681  HINCRBY     9413  SMEMBERS    9254  MULTI       3520  EXEC        3520  LPUSH       1620  EXPIRE      1598    Command Time (microsecs)(命令执行时长)  ========================================  Median      78.25  75%         105.0  90%         187.25  99%         411.0    Heaviest Commands (microsecs)(耗时最多的命令)  ========================================  SISMEMBER   5331651.0  HGET        2618868.0  HINCRBY     961192.5  SMEMBERS    856817.5  MULTI       311339.5  SADD        54900.75  SREM        40771.25  EXEC        28678.5    Slowest Calls(最慢的命令)  ========================================  3490.75     "SMEMBERS" "friendlist:zzz:1:2"  2362.0      "SMEMBERS" "friendlist:xzz:1:3"  2061.0      "SMEMBERS" "friendlist:zpz:1:2"  1961.0      "SMEMBERS" "friendlist:yzz:1:2"  1947.5      "SMEMBERS" "friendlist:zpz:1:2"  1459.0      "SISMEMBER" "friendlist:hzz:1:2" "zzz"  1416.25     "SMEMBERS" "friendlist:zhz:1:2"  1389.75     "SISMEMBER" "friendlist:zzx:1:2" "zzz"

从上面结果我们可以看到对Redis的操作规律,比如针对哪些key在进行操作,进行了什么操作,这些操作的效率如何等相关有用信息。

由于Redis的MONITOR 也对性能有所影响,所以建议在使用时不要一直开启MONITOR来分析。可以采用定时抽样一段时间来做样本分析。

项目主页:http://www.open-open.com/lib/view/home/1337300359760


文/NoSQLFan