sql >> Database >  >> NoSQL >> Redis

Redis — de beste manier om een ​​grote kaart op te slaan (woordenboek)

Ja, zoals Itamar Haber zegt, je zou deze redis-gids voor geheugenoptimalisatie moeten bekijken. Maar je moet ook nog een paar dingen in gedachten houden:

  1. Geef de voorkeur aan HSET boven KEYS. Redis verbruikt veel geheugen alleen bij het beheer van de sleutelruimte. In eenvoudige (en grove) termen, verbruikt 1 HSET met 1.000.000 sleutels tot 10x minder geheugen dan 1.000.000 sleutels met elk één waarde.
  2. HSET-grootte kleiner houden dan hash-max-zipmap-entries en geldige hash-max-zipmap-value als geheugen het hoofddoel is. Zorg ervoor dat u begrijpt wat hash-max-zipmap-entries en hash-max-zipmap-value gemeen. Neem ook even de tijd om over ziplist te lezen.
  3. U wilt eigenlijk niet omgaan met hash-max-zipmap-entries met 10M+ sleutels; in plaats daarvan moet u één HSET opsplitsen in meerdere slots. U stelt bijvoorbeeld hash-max-zipmap-entries . in als 10.000. Dus om 10M+ sleutels op te slaan, hebt u 1000+ HSET-sleutels nodig met elk 10.000. Als grove vuistregel:crc32(key) % maxHsets.
  4. Lees over strings in redis en gebruik een KEY-naam (in HSET) lengte op basis van echt geheugenbeheer voor deze structuur. In eenvoudige bewoordingen, als u de sleutellengte onder de 7 bytes houdt, besteedt u 16 bytes per sleutel, maar een sleutel van 8 bytes besteedt elk 48 bytes. Waarom? Lees meer over eenvoudige dynamische snaren.

Het kan nuttig zijn om te lezen over:

  • Redis geheugenoptimalisatie (van sripathikrishnan)
  • Opmerkingen over de interne ziplist-structuur.
  • Honderden miljoenen eenvoudige sleutel-waardeparen opslaan in Redis (Instagram)



  1. Twitter-achtige app met MongoDB

  2. Een handleiding voor ontwikkelaars voor MongoDB-replicasets

  3. Basisquerybewerkingen uitvoeren in MongoDB

  4. Een sessiearchief delen op Redis voor een Django- en een Express.js-toepassing