Redis
 sql >> база данни >  >> NoSQL >> Redis

Какво прави Redis, когато паметта му свърши?

Ако функцията за виртуална памет е включена (РЕДАКТИРАНЕ:вече е отхвърлено ), след което Redis започва да съхранява „не толкова често използваните“ данни на диск, когато паметта свърши.

Ако виртуалната памет в Redis е деактивирана (по подразбиране) и maxmemory параметърът е зададен (по подразбиране), Redis няма да използва повече памет от maxmemory позволява. Ако включите maxmemory изключен, Redis ще започне да използва виртуална памет (т.е. размяна) и производителността ще спадне значително.

По-новите версии на Redis имат различни правила, когато maxmemory е достигната:

  • volatile-lru - премахнете ключ от тези с изтекъл набор, опитвайки се да премахнете ключове, които не са използвани наскоро.
  • volatile-ttl - премахнете ключ от тези с изтекъл набор, опитвайки се да премахнете ключове с кратко оставащо време за живот.
  • volatile-random - премахване на произволен ключ сред тези с изтекъл набор.
  • allkeys-lru - катоvolatile-lru , но ще премахне всички видове ключове, както нормални, така и ключове с изтекъл набор.
  • allkeys-random -като volatile-random , но ще премахне всички видове ключове, както нормални, така и ключове с изтекъл набор.

Ако изберете политика, която премахва само ключове с набор EXPIRE, тогава когато Redis свърши без памет, изглежда, че програмата просто прекратява операцията malloc(). Тоест, ако се опитате да съхраните повече данни, операцията по запис просто се проваля.

Някои връзки за повече информация:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Кеш в паметта с изтичане на LRU

  2. Redis сървърът не може да работи повече от 1024M maxheap

  3. Как мога да защитя с парола моя /sidekiq маршрут (т.е. да изисквам удостоверяване за инструмента Sidekiq::Web)?

  4. Как да комбинираме сортираните набори Redis?

  5. Как да заредим used_memory в Redis?