5

我有一个 redis 实例,它在内存中不断增长,以至于我的应用程序逻辑明显出现问题,我有数万个键,想找出哪些是最大的内存用户。有解决这个问题的已知技术吗?

4

1 回答 1

2

我认为要走的路不是找到你的哪些钥匙是最大的,而是你的钥匙有什么特征 - 即它们持有什么样的数据。

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

我不知道您的应用程序的域,但一开始请尝试查找密钥的到期时间。不经常访问的密钥最终应该被删除。

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

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

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

于 2013-01-13T22:36:25.080 回答