2012-11-02 36 views

回答

2

不,您無法單獨控制每個數據庫。這些「數據庫」僅用於邏輯分區數據。

你可以做什麼(取決於你的具體要求和設置)是旋轉多個redis實例,每個實例執行不同的任務,每個實例都有自己的帶有內存上限的redis.conf文件。磁盤空間不能被限制,至少不在Redis級別。

附註:請記住,16位數據庫編號沒有硬編碼 - 您可以在redis.conf中設置它。

+0

這是另一種選擇,但我不知道如何在內存消耗爲每個實例的開銷。 – user209377

+0

但是這是_the_ option –

4

redis-rdb-tools

您可以通過數據庫得到近似的內存使用情況,應該是現實的10%以內。

+0

我會試試,但我想說'在現實的10%以內',你說的比你的程序報告多10%,對嗎?使用調試對象爲每個鍵獲取serializedlength作爲[這個問題](http://stackoverflow.com/questions/7638542/redis-show-database-size-size-for-keys)表明,它會是一個更好的下界?我需要檢查。 – user209377

+0

對於小物體,序列化長度是準確的。但對於較大的物體,這是非常不正確的。 Redis-rdb-tools反向工程師Redis的數據結構以找出所使用的內存。請參閱https://github.com/sripathikrishnan/redis-rdb-tools/blob/master/rdbtools/memprofiler.py中的評論以瞭解更多信息 –

0

我通過在Redis DB的所有密鑰上調用dump並測量使用的總字節數來完成的。這會減慢你的服務器,並需要一段時間。看起來dump返回的大小比實際的內存使用量小大約4倍。這些數字會讓你知道哪個數據庫使用最多的空間。

這裏是我的代碼: https://gist.github.com/mathieulongtin/fa2efceb7b546cbb6626ee899e2cfa0b