sql >> Databáze >  >> NoSQL >> Redis

Co dělá Redis, když mu dojde paměť?

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 -jako volatile-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/


  1. Vzdálenost tisku MongoDB mezi dvěma body

  2. Vzdálené připojení k MongoDB http rozhraní na EC2 serveru

  3. MongoDB jako databáze časových řad

  4. Může MongoDB použít index při kontrole existence pole s operátorem $exists?