2013-01-13 32 views
4

我有一個redis實例,它在內存中不斷增長,以至於出現了一些明顯與我的應用程序邏輯錯誤的地方,我有成千上萬個密鑰並想知道這是內存的最大用戶。有解決這個問題的技術嗎?在Redis中查找最大值 - 目前使用太多內存

+0

可能重複[在Redis中查找最大對象的最簡單方法是什麼?](https://stackoverflow.com/questions/13673058/what-is-the-easiest-way-to-find-the-最大的對象在redis) –

回答

2

我認爲,要走的路並不是找到哪個密鑰最大,而是你的密鑰具有哪些特徵 - 即它們擁有哪種數據。

Redis是而不是作爲關係數據庫的替代品,它是一個互補層(非常重要且有用,但仍然是互補的)。您可以用各種方式加速對應用程序中數據的訪問。這意味着在一天結束時,Redis應該不包括的所有內容,但只包含最常用的數據和/或一般統計和聚合。

我不知道您的應用程序域,但嘗試尋找到期爲鍵,爲開始。不常訪問的密鑰最終應該被刪除。

作爲進一步的一步,我會檢查冗餘密鑰,也就是說 - 相同的數據以多種形式保存。

注意: Redis中的冗餘絕對沒有錯,事實上這是一個推薦的模式(使用Redis而沒有標準化,有利於每個給定查詢的訪問速度)。我建議的是,您可能會發現某些類別的密鑰對其他密鑰完全無用,即它們不會增加速度優勢,只會使您的Redis數據庫膨脹。

嘗試看看一些可能幫助你探索你的運行Redis的實例Redis的GUI應用程序:

+0

謝謝,但我實際上只是尋找一種方法來檢查我沒有在redis 10meg列表的負載。 –

+0

爲什麼不只是手動運行所有列表鍵並測試每個鍵?您可以使用'LLEN'來檢查列表長度(項目數量),或者您可以進一步檢索所有成員並計算其內部長度。我不擔心性能,它只是用來調試你的系統。 –

+0

我基本上是在尋找一種我不必自己寫的工具。 redis-rdb-tools是完美的。 –