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

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


redis-faina的安装:

1
2
# yum install git
# git clone https://github.com/facebookarchive/redis-faina.git


redis-faina的使用帮助:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# cd redis-faina/
# ./redis-faina.py -h
 
usage: redis-faina.py [-h] [--prefix-delimiter PREFIX_DELIMITER]
                       [--redis-version REDIS_VERSION]
                       [input]
positional arguments:
   input                 File to parse; will  read  from stdin otherwise
optional arguments:
   -h, --help            show this help message and  exit
   --prefix-delimiter PREFIX_DELIMITER
                         String to  split  on  for  delimiting prefix and rest of
                         key
   --redis-version REDIS_VERSION
                         Version of the redis server being monitored


 redis-faina的两种用法:

1,可以通过管道从stdin读取N条命令

1
redis-cli -p port MONITOR |  head  -n <NUMBER OF LINES TO ANALYZE> | . /redis-faina .py [options]

2,也可以从一个文件中读取N条命令

1
2
redis-cli -p port MONITOR |  head  -n <NUMBER OF LINES TO ANALYZE> >  /tmp/outfile .txt
. /redis-faina .py  /tmp/outfile .txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# redis-cli -p 6381 MONITOR | head -n 10000 | ./redis-faina.py
Overall Stats
========================================
Lines Processed  10000
Commands /Sec      274.73
Top Prefixes    #按照key的前缀统计
========================================
testcache-rendsord-lang        1684(16.84%)
testcache-inuanGoods- id         1090(10.90%)
testcache-riceroup-cat_id      307 (3.07%)
testcache-ategorynfo- id         190 (1.90%)
testcache-ategoryey-lang       189 (1.89%)
testcache-earchtrremplate- id   61  (0.61%)
testcache-riceroup- id           15  (0.15%)
testcache-otordata-lang       9   (0.09%)
Top Keys      #请求最频繁的key
========================================
testcache-acebookhareandsave  2373(23.73%)
testcache-hippingFee           2198(21.98%)
testcache-rendsord-lang:en    1464(14.64%)
testcache-ountryurrency       1181(11.81%)
testcache-inuanoods          442 (4.42%)
testcache-ategoryey-lang:     183 (1.83%)
testcache-rendsord-lang:es    124 (1.24%)
testcache-inuanoods- id :68    114 (1.14%)
Top Commands      # 执行最频繁的命令
========================================
GET      9957(99.57%)
AUTH     13  (0.13%)
COMMAND  13  (0.13%)
SADD     10  (0.10%)
info     5   (0.05%)
SET      1   (0.01%)
Command Time (microsecs)     # 命令执行时长
========================================
Median  2309.0
75%     4959.75
90%     8447.0
99%     18482.0
Heaviest Commands (microsecs)     #耗时最多的命令
========================================
GET      36281717.75
COMMAND  85269.25
SADD     17985.75
info     10698.5
SET      3228.0
AUTH     625.5
Slowest Calls      #执行最慢的命令
========================================
179962.0   "GET"  "testcache-hippingee"
62659.0    "GET"  "testcache-romotionullateeduce"
44902.0    "GET"  "testcache-hippingee"
40305.25   "GET"  "testcache-hippingee"
39559.0    "GET"  "testcache-hippingee"
36831.25   "GET"  "testcache-hippingee"
33852.0    "GET"  "testcache-hippingee"
33501.0    "GET"  "testcache-hippingee"