8 个版本
0.3.0 | 2022 年 9 月 2 日 |
---|---|
0.2.2 | 2019 年 7 月 16 日 |
0.1.3 | 2019 年 7 月 15 日 |
#1090 在 数据库接口
42 每月下载量
375KB
518 行
Redis Analyzer
控制台工具,用于实时扫描 Redis 数据库中的键并按键前缀汇总计数和内存使用统计信息。
功能
- 键计数和内存使用统计
- 同时扫描多个 Redis 数据库
- 低内存签名
- 快速(几分钟内扫描数十百万个键的实例)
动机
已经有很好的工具在执行类似的工作,甚至有更多功能
但是,由于内存需求和完整扫描所需的时间,在具有数百万键的大 Redis 数据库上使用它们不可行。
安装
您需要 rust 和 cargo。有关获取它们的说明,请参阅此处。
然后,您可以通过运行以下命令安装它:cargo install redis-analyzer
。
或者,要自行构建,请克隆仓库并运行以下命令:cargo build --release
。
用法
# redis-analyzer --help
redis-analyzer 0.2.0
Analyzes keys in Redis to produce breakdown of the most frequent prefixes.
USAGE:
redis-analyzer [FLAGS] [OPTIONS] --urls <URL1,URL2>
FLAGS:
--full-keys Shows full keys in result instead of just suffixes.
-h, --help Prints help information
--progress Shows progress
-V, --version Prints version information
OPTIONS:
-c, --concurrency <CONCURRENCY>
Maximum number of hosts scanned at the same time. [default: number of logical CPUs]
-d, --depth <DEPTH> Maximum key depth to examine.
-f, --format <plain|json> Output format. (default: plain)
--min-count-percentage <MIN_PREFIX_COUNT_PERCENTAGE>
Minimum prefix frequency in percentages for prefix to be included in the result. [default: 1.0]
--order <count|memory> Sort order. [default: memory]
--scan-size <SCAN_SIZE>
Configures how many keys are fetched at a time. [default: 100]
-s, --separators <SEPARATORS> List of key separators. [default: :/|]
-u, --urls <URL1,URL2> List of URLs to scan.
示例
示例输出
$ redis-analyzer -u 127.0.0.1:6379/0,127.0.0.1:6379/2
Took 976ms 142us
Keys Count Memory Usage
ALL -------------------15155 (100.00%) --------------26.88MB (100.00%)
├─ cache --------------├─ 294 (1.94%) ---------------├─ 2.04MB (7.60%)
│ └─ Touchify --------│--└─ 239 (81.29%) -----------│--└─ 20.62KB (0.99%)
│ └─ internal -----│-----└─ 239 (100.00%) -------│-----└─ 20.62KB (100.00%)
│ └─ User ------│--------└─ 239 (100.00%) ----│--------└─ 20.62KB (100.00%)
├─ feed ---------------├─ 158 (1.04%) ---------------├─ 1.60MB (5.97%)
│ └─ feed ------------│--└─ 158 (100.00%) ----------│--└─ 1.60MB (100.00%)
│ └─ feeds --------│-----└─ 155 (98.10%) --------│-----└─ 1.60MB (99.93%)
├─ hovno --------------├─ 13808 (91.11%) ------------├─ 1.55MB (5.75%)
├─ sidekiq ------------├─ 399 (2.63%) ---------------├─ 1.27MB (4.74%)
│ └─ stat ------------│--└─ 388 (97.24%) -----------│--└─ 28.21KB (2.16%)
│ ├─ processed ----│-----├─ 194 (50.00%) --------│-----├─ 14.58KB (51.68%)
│ └─ failed -------│-----└─ 194 (50.00%) --------│-----└─ 13.63KB (48.32%)
├─ stat ---------------├─ 176 (1.16%) ---------------├─ 11.24KB (0.04%)
├─ counts -------------├─ 120 (0.79%) ---------------├─ 9.68KB (0.04%)
└─ [other] ------------└─ 200 (1.32%) ---------------└─ 20.39MB (75.86%)
$ redis-analyzer -u 127.0.0.1:6379/0 -d 1
Took 752ms 708us
Keys Count Memory Usage
ALL -----------14971 (100.00%) ------7.29MB (100.00%)
├─ cache ------├─ 294 (1.96%) -------├─ 2.04MB (28.02%)
├─ feed -------├─ 158 (1.06%) -------├─ 1.60MB (22.00%)
├─ hovno ------├─ 13808 (92.23%) ----├─ 1.55MB (21.19%)
├─ sidekiq ----├─ 399 (2.67%) -------├─ 1.27MB (17.42%)
├─ counts -----├─ 120 (0.80%) -------├─ 9.68KB (0.13%)
└─ [other] ----└─ 192 (1.28%) -------└─ 840.05KB (11.25%)
$ redis-analyzer -u 127.0.0.1:6379/0 -d 2 --order count --full-keys
Took 838ms 811us
Keys Count Memory Usage
ALL ---------------------14971 (100.00%) --------7.29MB (100.00%)
├─ hovno ----------------├─ 13808 (92.23%) ------├─ 1.55MB (21.19%)
├─ sidekiq --------------├─ 399 (2.67%) ---------├─ 1.27MB (17.42%)
│ └─ sidekiq:stat ------│--└─ 388 (97.24%) -----│--└─ 28.21KB (2.17%)
├─ cache ----------------├─ 294 (1.96%) ---------├─ 2.04MB (28.02%)
│ └─ cache:Touchify ----│--└─ 239 (81.29%) -----│--└─ 20.62KB (0.99%)
├─ feed -----------------├─ 158 (1.06%) ---------├─ 1.60MB (22.00%)
│ └─ feed:feed ---------│--└─ 158 (100.00%) ----│--└─ 1.60MB (100.00%)
├─ counts ---------------├─ 120 (0.80%) ---------├─ 9.68KB (0.13%)
└─ [other] --------------└─ 192 (1.28%) ---------└─ 840.05KB (11.25%)
依赖项
~9–19MB
~274K SLoC