技术开发 频道

免费又好用,六大Redis内存分析工具推荐

  【IT168 技术】市面上有很多免费开源或者付费的工具来分析Redis实例的内存使用情况,其中最受欢迎的就是Jacks,但是如果你想要更深入的分析你的内存问题,那么使用更有针对性的的工具可能会是更好的选择。

  本文中,我们将为大家推荐分析Redis实例内存使用情况最有效的免费工具Top 6:

  1. Redis Memory Analyzer (RMA)

  2. Redis Sampler

  3. RDB Tools

  4. Redis-Audit

  5. Redis Toolkit

  6. Harvest

  1)Redis Memory Analyzer(RMA)

免费又好用,六大Redis内存分析工具推荐

  Redis Memory Analyzer(RMA)是Redis最全面的FOSS内存分析器之一,支持三个不同级别的分析:

  Global - 内存使用信息概述。

  Scanner - 较高级别的密钥空间/前缀级内存使用信息,换句话说就是使用最短的公用前缀。

  RAM - 最低级密钥空间/前缀,换句话说就是使用最长的公用前缀。

  这三种模式都各有自己的用途,感兴趣的朋友可以去RMA ReadMe中查看更多的详细信息。

  RMA - Global模式

免费又好用,六大Redis内存分析工具推荐

  在全局模式下,RMA提供一些高级统计信息,如密钥数量、系统内存、resident集大小,密钥空间大小等。其中比较特殊的功能是“密钥空间开销”,Redis系统使用的内存存储与密钥空间相关的信息,例如列表数据结构的指针。

  RMA - Scanner模式

免费又好用,六大Redis内存分析工具推荐

  在Scanner模式下可以概览密钥空间。它提供高级命名空间、项目类型和该命名空间占用的内存百分比。将这些信息和命名空间模式下的RAM行为相结合可以进行详细分析。

  RMA - RAM模式

免费又好用,六大Redis内存分析工具推荐

  在RAM模式下可以得到了密钥空间级别的内存消耗,这和其他大多数FOSS内存分析器提供的一样,我们可以获得使用的内存、实际数据大小、开销、编码、TTL最小值和最大值的详细信息等等,这有助于查明我们系统中最大的记忆棒。

  不过,遗憾的是这个工具的更新频率很低,GitHub上最近的一次更新也已经是一年前了,但这并不影响它是我们发现的最好的分析工具之一。

  RMA安装和使用:

  RMA需要在系统上安装Python和PIP(两者均适用于所有主要操作系统)。安装完成后,执行一个命令来安装RDB工具 - “pip install rma”。如果要使用命令行也很简单,"rma [-s HOST] [-p PORT] [-a PASSWORD] [-d DB] [-m pattern-to-match] [-l number-of-keys-to-scan] [-b BEHAVIOUR] [-t comma-separated-list-of-data-types-to-scan]"。

  RMA优点:

  ·实时性。

  ·使用扫描命令遍历数据库,因此性能影响是有限的,而分析非常准确。

  ·记录完备,很容易找到使用示例。

  ·支持强大的自定义和过滤选项,包括只分析特定的数据类型,或者只考虑匹配特定模式的密钥)。

  ·提供不同级别的详细信息,例如命名空间,键或全局值。

  ·少有的审计工具,可显示了数据结构的开销。

  RMA缺点:

  ·不支持概率抽样。线性扫描数据库对于大型数据库来说可能非常慢,可以选择一旦返回一定数量的密钥来停止扫描以提高性能。

  ·输出中有很多细节; 虽然对专家有帮助,但它可能只是为了混淆新手。

  2)Redis Sampler

  Redis Sampler是一个非常强大的工具,可以深入了解Redis实例的内存使用情况。它由Redis开发人员antirez维护,虽然该工具不经常更新,但是暴露出的问题却很少。

免费又好用,六大Redis内存分析工具推荐

  Redis Sampler对数据库进行概率性扫描并报告以下信息:

  ·各种数据类型中key的百分比分布,这里指的是Key的数量。

  ·基于strlen字符串类型的最大key以及它们消耗的内存百分比。

  ·对于其他数据类型,计算最大的key并将其显示为两个单独的列表:一个是基于对象的大小,另一个是基于对象中项目的数量。

  ·对于每种数据类型,显示“Power of 2 distribution”。这对于理解数据类型内的大小分布非常有用。输出结果基本上会详细说明给定类型的key的大小在> 2 ^ x和<= 2 ^ x + 1范围内的百分比。

  Redis Sampler安装和使用:

  这是一个单独的Ruby脚本,所以需要提前安装Ruby,同时还需要安装“rubygems”和“redis”gems,使用方法很简单,直接执行命令行代码 “./redis-sampler.rb”。

  Redis Sampler优点:

  ·使用简单。

  ·输出结果完整清晰,即使是初学者也很容易理解,对于Redis专家来说,输出结果提供的信息足以,但是有足够的信息可以让专家对Redis实例进行非常详细的分析。这些部分明确划分并易于过滤。

  ·适用于所有Redis版本。

  ·不使用任何像DEBUG OBJECT这样的特权命令,因此它可以在任何系统上使用,包括Amazon的ElastiCache。

  ·它使用特定于数据类型的长度命令来标识数据大小,因此报告的使用情况不受序列化的影响。

  ·适用于实时数据。虽然建议在loopback接口上运行,但它支持采样远程系统。

  Redis采样器缺点:

  如果样本大小设置为高于数据库基数,则它仍将使用RANDOMKEYS而不是SCAN。

  没有捆绑包或Docker镜像可用。你必须手动安装依赖关系(尽管很明显,只有2个依赖关系)。

  报告数据大小,由于数据结构存储开销,数据大小与RAM上占用的空间不完全匹配。

  如果您的Redis实例需要身份验证,则无法正常使用。您需要修改脚本以获取密码; 以最简单的形式搜索:redis = Redis.new(:host => ARGV [0],:port => ARGV [1] .to_i,:db => ARGV [2] .to_i)并将其更改为: redis = Redis.new(:host => ARGV [0],:port => ARGV [1] .to_i,:db => ARGV [2] .to_i,:password =>“add-your-password-here” )

  3)RDB Tools

免费又好用,六大Redis内存分析工具推荐

  RDB Tools对于要求严格的Redis管理员是非常有用的工具,只要我们想到的用途RDB Tools都有对应的用例,不过本文中我们将专注于内存分析,虽然没有RMA或Redis Sampler那么全面,但RDB Tools也提供了三个重要的信息:

免费又好用,六大Redis内存分析工具推荐

  1)值(串行化)大小大于B字节[B由用户指定]的所有键。

  2)最大的N个键[N由用户指定]。

  3)特定键的大小:这是从数据库中实时读取的。

  该套件在GitHub上有许多活跃的贡献者,经常更新,同时RDB的维护者 Sripathi Krishnan在Redis社区中也提供了许多工具。

  RDB工具安装和使用:

  RDB Tools需要在系统上安装Python和PIP(两者都适用于所有主要操作系统)。安装完成后,执行一条命令来安装RDB工具 - “pip install rdbtools python-lz”

  使用方法:

  获得200个最大密钥:rdb -c memory /var/redis/6379/dump.rdb -largest 200 -f memory.csv

  获取大于128字节的所有密钥:rdb -c memory /var/redis/6379/dump.rdb --bytes 128 -f memory.csv

  获取密钥的大小:redis-memory-for-key -s localhost -p 6379 -a mypassword person:1

  RDB Tools优点:

  ·输出CSV文件,该文件可以与其他FOSS工具一起使用,并轻松创建数据可视化,导入到RDBMS-es中运行分析。

  ·有据可查。

  ·支持自定义和过滤选项,可以获得更多有用的报告。

  RDB Tools缺点:

  ·RDB Tools分析不适用于实时数据,必须进行RDB转储。报告的内存使用量是序列化的内存,与RAM上占用的内存不完全相同。

  ·没有任何内置的分组支持,因此无法找到最大的命名空间。

  4)Redis-Audit

  Redis-Audit是一个概率性工具,可用于快速查看内存使用情况,输出关键组的有用信息,如整体内存消耗,组中的最大TTL,平均上次访问时间,过期的密钥百分比等。

  Redis-Audit安装和使用:

  首先,需要安装Ruby和Bundle,安装完成后,将Redis-Audit存储库克隆到某个文件夹,或者下载该zip并将其解压缩到一个文件夹,运行bundle install完成安装。

  用法简单:运行"execute"

  redis-audit.rb hostname [port] [password] [dbnum] [sample_size]

  Redis-Audit优点:

  ·允许为keyspace/prefix grouping自定义正则表达式。

  ·适用于所有Redis版本。

  ·如果样本量大于实际的密钥数量,它将遍历所有密钥。另外,该操作使用key *而不是扫描,而这可能会阻止其他操作。

  Redi-Audit缺点:

  ·使用DEBUG OBJECT command(在ElastiCache中不可用),因此,它会报告序列化大小,这与RAM上占用的实际大小不同。

  ·输出不能被快速解析。

  5)Redis Toolkit

  Redis Toolkit是一款基本的监控解决方案,可用于分析两个关键指标:命中率和内存消耗。虽然该项目会定期更新错误修复,但是遗憾的是并没有一些突出的工具突出。

  Redis Toolkit的安装和使用:

  首先,需要在系统上安装Docker,并克隆GitHub存储库(或者下载为zip并解压到一个文件夹)。用法基本都是通过一系列简单的命令来完成。

  ·要开始监视命中率: ./redis-toolkit monitor

  ·报告命中率: ./redis-toolkit report -name NAME -type hitrate

  ·要停止监视命中率:./redis-toolkit stop

  ·要在本地系统上创建转储文件:./redis-toolkit dump

  ·报告内存使用情况:./redis-toolkit report -type memory -name NAME

  Redis Toolkit优点:

  ·易于理解的界面,提供所需的确切信息。

  ·将前缀分组到任何级别。

  ·适用于所有Redis版本; 不需要访问像DEBUG OBJECT这样的特权命令。

  ·有据可查。

  Redis Toolkit缺点:

  ·内存分析不是实时的,因为它在序列化转储上工作,所报告的内存使用量将不等于实际的RAM消耗量。

  ·必须在运行Redis Toolkit的计算机上创建转储,如果您有远程Redis实例,那么可能需要等待一段时间。

  ·监视命中率使用MONITOR命令来捕获服务器上运行的所有命令,这种做法可能会降低性能,进而可能会影响生产。

  ·命中率计算为| GET | /(| GET | + | SET |),所以如果一个值经常变化,它的命中率会更低。

  6)Harvest

  这是一个概率抽样工具,可用于根据密钥的数量来标识10个最大的名称空间/前缀,但由于是一个新工具,所以现在在GitHub上还没有很高的人气,不过,如果你是Redis新手,想要确定哪种应用程序数据阻塞了实例,那么Harvest绝对是最简单的选择。

  Harvest安装和使用:

  作为Docker镜像下载,一旦映像准备就绪,可用CLI中的命令“docker run --link redis:redis -it --rm 31z4 / harvest redis:// redis-URL”来运行该工具。

  Harvest优点:

  ·适用于实时数据。

  ·使用“memory usage”命令来获取大小信息,因此可以给出准确的大小信息(而不是序列化的大小),并且不需要访问DEBUG OBJECT命令。

  Harvest缺点:

  ·适用性有局限,难以找到其他用例。

  ·该工具仅适用于Redis v4.0及更高版本。

  ·文档较少。

0
相关文章