sql >> Databasteknik >  >> NoSQL >> Redis

Vad gör Redis när det tar slut på minne?

Om du har aktiverat virtuell minnesfunktion (EDIT:nu utfasad ), sedan börjar Redis lagra "inte-så-ofta-använda" data på disk när minnet tar slut.

Om virtuellt minne i Redis är inaktiverat (standard) och maxmemory parametern är inställd (standard), kommer Redis inte att använda mer minne än maxmemory tillåter. Om du aktiverar maxmemory av, kommer Redis att börja använda virtuellt minne (d.v.s. byta) och prestandan kommer att sjunka enormt.

Nyare versioner av Redis har olika policyer när maxmemory nås:

  • volatile-lru - ta bort en nyckel bland de som har en utgångsuppsättning, försöker ta bort nycklar som inte har använts nyligen.
  • volatile-ttl - ta bort en nyckel bland de som har en utgångsuppsättning, försök att ta bort nycklar med kort återstående tid att leva.
  • volatile-random - ta bort en slumpmässig nyckel bland de som har en utgångsdatum.
  • allkeys-lru - somvolatile-lru , men kommer att ta bort alla typer av nycklar, både vanliga nycklar eller nycklar med en utgångsuppsättning.
  • allkeys-random -like volatile-random , men tar bort alla typer av nycklar, både vanliga nycklar och nycklar med en utgångsuppsättning.

Om du väljer en policy som bara tar bort nycklar med en EXPIRE-uppsättning, så när Redis tar slut på minne, ser det ut som att programmet bara avbryter malloc()-operationen. Det vill säga, om du försöker lagra mer data, misslyckas skrivoperationen helt enkelt.

Några länkar för mer information:

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


  1. Långsam paginering över massor av poster i mongodb

  2. mongodb-tjänsten startar inte

  3. Hur ringer man BGSAVE från BookSleeve?

  4. MongoDB-fråga med elemMatch för kapslade arraydata