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
-likevolatile-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/