sql >> Database teknologi >  >> NoSQL >> Redis

Hvad gør Redis, når den løber tør for hukommelse?

Hvis du har aktiveret virtuel hukommelsesfunktionalitet (EDIT:nu forældet ), så begynder Redis at gemme de "ikke-så-hyppigt-brugte" data på disken, når hukommelsen løber tør.

Hvis virtuel hukommelse i Redis er deaktiveret (standard) og maxmemory parameter er indstillet (standard), vil Redis ikke bruge mere hukommelse end maxmemory tillader. Hvis du slår maxmemory slukket, begynder Redis at bruge virtuel hukommelse (dvs. swap), og ydeevnen vil falde gevaldigt.

Nyere versioner af Redis har forskellige politikker, når maxmemory nås:

  • volatile-lru - fjern en nøgle blandt dem med et udløbssæt, prøv at fjerne nøgler, der ikke er brugt for nylig.
  • volatile-ttl - fjern en nøgle blandt dem med et udløbssæt, prøv at fjerne nøgler med kort resterende tid til live.
  • volatile-random - fjern en tilfældig nøgle blandt dem med et udløbssæt.
  • allkeys-lru - somvolatile-lru , men vil fjerne alle slags nøgler, både normale nøgler eller nøgler med et udløbssæt.
  • allkeys-random -like volatile-random , men vil fjerne alle slags nøgler, både normale nøgler og nøgler med et udløbssæt.

Hvis du vælger en politik, der kun fjerner nøgler med et EXPIRE-sæt, så når Redis løber tør for hukommelse, ser det ud til, at programmet bare afbryder malloc()-operationen. Det vil sige, at hvis du forsøger at gemme flere data, mislykkes skriveoperationen simpelthen.

Nogle links til mere info:

  • http://antirez.com/post/redis-as-LRU-cache.html
  • http://eli.thegreenplace.net/2009/10/30/handling-out-of-memory-conditions-in-c/


  1. Dynamiske nøgler efter $gruppe efter

  2. Hvordan starter jeg Mongo DB fra Windows?

  3. Optimering af dit Linux-miljø til MongoDB

  4. Opdater indlejrede underdokumenter i MongoDB med arrayFilters