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

时间:2013-01-13 22:30:51

标签: redis

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

我认为要走的路不是找出哪个键是最大的,而是你的键具有什么特征 - 即它们拥有什么样的数据。

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

我不知道你的应用程序的域名,但是在开始时尝试为密钥寻找到期。不经常访问的密钥最终应该被删除。

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

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

尝试查看一些可能有助于您探索运行时Redis实例的Redis GUI应用程序: