Pokud máte zapnutou funkci virtuální paměti (UPRAVIT:nyní již není podporováno ), poté začne Redis ukládat „ne tak často používaná“ data na disk, když dojde paměť.
Pokud je virtuální paměť v Redis zakázána (výchozí nastavení) a maxmemory
je nastaven (výchozí), Redis nebude používat více paměti než maxmemory
umožňuje. Pokud otočíte maxmemory
vypnout, Redis začne používat virtuální paměť (tj. swap) a výkon se výrazně sníží.
Novější verze Redis mají různé zásady při maxmemory
je dosaženo:
volatile-lru
- odebrat klíč z těch, kteří mají nastavenou dobu platnosti, a pokusit se odstranit klíče, které nebyly nedávno použity.volatile-ttl
- Odstraňte klíč z těch, kteří mají nastavenou dobu platnosti, a pokuste se odstranit klíče s krátkým zbývajícím časem, aby mohly fungovat.volatile-random
- odeberte arandom klíč z těch, kterým vypršela doba platnosti.allkeys-lru
- jakovolatile-lru
, ale odstraní všechny druhy klíčů, jak normální klíče, tak klíče s nastavenou dobou platnosti.allkeys-random
-jakovolatile-random
, ale odebere všechny druhy klíčů, jak normální klíče, tak klíče s nastavenou dobou platnosti.
Pokud zvolíte zásadu, která odebere pouze klíče se sadou EXPIRE, pak když Redis dojde paměť, vypadá to, že program právě přeruší operaci malloc(). To znamená, že pokud se pokusíte uložit více dat, operace zápisu jednoduše selže.
Několik odkazů pro více informací:
- http://antirez.com/post/redis-as-LRU-cache.html
- http://eli.thegreenplace.net/2009/10/30/handling-out-of-memory-conditions-in-c/