sql >> Database >  >> NoSQL >> Redis

Waarom kost een 500 MB Redis dump.rdb-bestand ongeveer 5,0 GB geheugen?

De verhouding tussen geheugen en dumpgrootte hangt af van de gegevenstypen die Redis intern gebruikt.

Voor kleine objecten (hashes, lijsten en gesorteerde sets) gebruikt redis ziplists om gegevens te coderen. Voor kleine sets gemaakt van gehele getallen, gebruikt redis Intsets. ZipLists en IntSets worden op schijf opgeslagen in hetzelfde formaat als in het geheugen . Je zou dus een verhouding van 1:1 verwachten als je gegevens deze coderingen gebruiken.

Voor grotere objecten is de weergave in het geheugen totaal anders dan de weergave op schijf. Het on-disk formaat is gecomprimeerd, heeft geen pointers, heeft geen te maken met geheugenfragmentatie. Dus als uw objecten groot zijn, is een geheugen/schijfverhouding van 10:1 normaal en te verwachten.

Als je wilt weten welke objecten geheugen in beslag nemen, gebruik dan redis-rdb-tools om je gegevens te profileren (disclaimer:ik ben de auteur van deze tool). Volg vanaf daar de opmerkingen over geheugenoptimalisatie op redis.io, evenals het wiki-item voor geheugenoptimalisatie op redis-rdb-tools.



  1. Inleiding tot Redis-gegevensstructuren:gesorteerde sets

  2. Een getal opmaken als valuta in SQL

  3. Update geneste array-objecten op basis van een eigenschap in MongoDB

  4. Slaapstand met MongoDB