在Redis中找到最大值 - 目前使用太多内存

hen*_*ald 4 redis

我有一个redis实例,它在内存中不断增长到我的应用程序逻辑明显出错的地步,我有成千上万的密钥,并想知道哪些是内存的最大用户.有没有一种技术可以解决这个问题?

Sri*_*nan 6

使用redis-rdb-tools - https://github.com/sripathikrishnan/redis-rdb-tools

使用该-c memory标志,您将获得一个csv文件,其中包含每个密钥使用的大致内存.它旨在解决您面临的确切问题.


Ofe*_*lig 2

我认为要走的路不是找到哪个密钥最大,而是找到您的密钥具有什么特征 - 即它们保存什么类型的数据。

Redis 不是关系数据库的替代品,它是一个补充层(非常重要且有用,但仍然是补充)。您可以使用它以各种方式加速对应用程序中数据的访问。这意味着最终,Redis 可能不应该包含所有内容,而应该只包含最常用的数据和/或一般统计数据和聚合。

我不知道您的应用程序的域,但首先尝试查找密钥的过期情况。不经常访问的密钥最终应该被删除。

作为进一步的步骤,我将检查冗余键,即相同的数据以多种形式保存。

注意: Redis 中的冗余绝对没有问题,事实上,这是推荐的模式(使用不进行规范化的 Redis,有利于每个给定查询的访问速度)。我所建议的是,您可能会发现某些类别的密钥与其他类别相比完全无用,即它们不会增加任何速度优势,只会膨胀您的 Redis 数据库。

尝试查看一些 Redis GUI 应用程序,它们可能会帮助您探索运行时 Redis 实例: