Redis consente di memorizzare i dati in 16 diversi "database" (da 0 a 15). C'è un modo per ottenere memoria utilizzata & spazio su disco per database. Il comando INFO elenca solo il numero di chiavi per database.Utilizzo memoria in rosso per ogni database
risposta
No, non è possibile controllare singolarmente ciascun database. Questi "database" sono solo per il partizionamento logico dei tuoi dati.
Quello che puoi fare (dipende dalle tue esigenze specifiche e dalla configurazione) sta facendo girare più istanze di redis, ognuna esegue un compito diverso e ognuna ha il proprio file redis.conf
con un limite di memoria. Lo spazio su disco non può essere limitato, almeno non in livello Redis.
Nota a margine: Ricordare che il numero di 16 database non è hardcoded: è possibile impostarlo su redis.conf
.
Vedi redis-rdb-tools
è possibile ottenere un utilizzo della memoria da parte del database approssimativa, dovrebbe essere entro il 10% della realtà.
Lo proverò, ma suppongo che dicendo "entro il 10% della realtà", stai dicendo il 10% in più di quello che riporta il tuo programma, giusto? Ottenere una lunghezza serializzata per ogni chiave usando l'oggetto di debug come [questa domanda] (http://stackoverflow.com/questions/7638542/redis-show-database-size-size-for-keys) suggerisce, sarà un migliore limite inferiore ? Ho bisogno di controllare. – user209377
Per oggetti piccoli, la lunghezza serializzata è accurata. Ma per oggetti più grandi, è orribilmente scorretto. Redis-rdb-tools reverse engineers Redis 'strutture dei dati per scoprire la memoria utilizzata. Vedi i commenti in https://github.com/sripathikrishnan/redis-rdb-tools/blob/master/rdbtools/memprofiler.py per saperne di più –
L'ho fatto chiamando dump
su tutte le chiavi in un DB Redis e misurando il numero totale di byte utilizzati. Questo rallenterà il tuo server e richiederà un po 'di tempo. Sembra che la dimensione dei ritorni dump
sia inferiore di circa 4 volte rispetto all'utilizzo effettivo della memoria. Questi numeri ti daranno un'idea di quale db sta usando il maggior spazio.
Ecco il mio codice: https://gist.github.com/mathieulongtin/fa2efceb7b546cbb6626ee899e2cfa0b
Questa è un'altra opzione, ma io non sono sicuro di quanto sopra la testa in consumo di memoria per ogni istanza. – user209377
Ma questa è l'opzione –