Ja, som Itamar Haber siger, bør du se på denne redis-hukommelsesoptimeringsguide. Men du bør også huske på nogle flere ting:
- Foretrækker HSET frem for NØGLER. Redis bruger meget hukommelse kun på nøglepladsstyring. Enkelt (og groft) bruger 1 HSET med 1.000.000 nøgler op til 10 gange mindre hukommelse end 1.000.000 nøgler med én værdi hver.
- Hold HSET-størrelse mindre end
hash-max-zipmap-entries
og gyldighash-max-zipmap-value
hvis hukommelsen er hovedmålet. Sørg for at forstå, hvilkehash-max-zipmap-entries
oghash-max-zipmap-value
betyde. Brug også lidt tid på at læse om ziplist. - Du ønsker faktisk ikke at håndtere
hash-max-zipmap-entries
med 10M+ nøgler; i stedet bør du opdele et HSET i flere slots. For eksempel indstiller duhash-max-zipmap-entries
som 10.000. Så for at opbevare 10M+ nøgler skal du bruge 1000+ HSET nøgler med 10.000 hver. Som en grov tommelfingerregel:crc32(key) % maxHsets. - Læs om strenge i redis og brug et NØGLEnavn (i HSET) længde baseret på reel hukommelsesstyring for denne struktur. Enkelt sagt, hvis du holder nøglelængden under 7 bytes, bruger du 16 bytes pr. nøgle, men en 8-byte nøgle bruger 48 bytes hver. Hvorfor? Læs om simple dynamiske strenge.
Det kan være nyttigt at læse om:
- Redis Memory Optimization (fra sripathikrishnan)
- Kommentarer om intern ziplistestruktur.
- Lagring af hundreder af millioner af simple nøgleværdi-par i Redis (Instagram)