#key #redis #memory #prefixes #analyzer #most #produce

app redis-analyzer

分析 Redis 中的键以生成最频繁前缀的分解

8 个版本

0.3.0 2022 年 9 月 2 日
0.2.2 2019 年 7 月 16 日
0.1.3 2019 年 7 月 15 日

#1090数据库接口

42 每月下载量

MIT 许可证

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