sql >> Databasteknik >  >> NoSQL >> Redis

Varför en 500MB Redis dump.rdb-fil tar ungefär 5,0GB minne?

Förhållandet mellan minne och dumpstorlek beror på vilka datatyper Redis använder internt.

För små objekt (hashar, listor och sorterade uppsättningar) använder redis ziplistor för att koda data. För små uppsättningar gjorda av heltal använder redis Intsets. ZipLists och IntSets lagras på disk i samma format som de är lagrade i minnet . Så du kan förvänta dig ett förhållande på 1:1 om din data använder dessa kodningar.

För större objekt är in-memory-representationen helt annorlunda än på-disk-representationen. Formatet på disken är komprimerat, har inga pekare, behöver inte hantera minnesfragmentering. Så om dina objekt är stora är ett 10:1 minne till disk-förhållande normalt och förväntat.

Om du vill veta vilka objekt som äter upp minne, använd redis-rdb-tools för att profilera dina data (friskrivningsklausul:jag är författaren till det här verktyget). Därifrån följer du anteckningarna om minnesoptimering på redis.io, såväl som wiki-posten för minnesoptimering på redis-rdb-tools.



  1. MongoDB $weeklyUpdate #66 (22 april 2022):Hackathons, mongosh och Github

  2. hur kan jag få sessioner att fungera med redis, express &socket.io?

  3. Hur jag skrev en Chart-Topping-app på en vecka med Realm och SwiftUI

  4. Filtrera array med $in-operatorn i $projektstadiet