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

Как изтича ключовете за redis?

Накратко - за всеки обект на redis има време на изтичане. Освен ако не настроите обекта да изтече, това време е "никога".

Сега самият механизъм на изтичане е полу-мързелив. Lazy expiration означава, че всъщност не изтичате срока на валидност на обектите, докато не бъдат прочетени. Когато четем обект, ние проверяваме времевата му марка на изтичане и ако е в миналото, не връщаме нищо и изтриваме обекта, докато сме на него. Но проблемът е, че ако ключът никога не бъде докоснат, той просто заема памет без причина.

Така Redis добавя втори слой на произволно активно изтичане. Той просто чете произволни ключове през цялото време и когато се докосне ключ с изтекъл срок, той се изтрива въз основа на мързеливия механизъм. Това не засяга поведението на изтичане, а просто добавя „събиране на боклука“ на ключове с изтекъл срок на валидност.

Разбира се, реалното изпълнение е по-сложно от това, но това е основната идея.

Можете да прочетете повече за това тук:http://redis.io/commands/expire

А изходният код за активния цикъл на изтичане може да се намери тук:https://github.com/antirez/redis/blob/a92921da135e38eedd89138e15fe9fd1ffdd9b48/src/expire.c#L98



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Прескачащи ключове за сканиране на Redis

  2. Как да деактивирам постоянството с redis?

  3. Как мога да внедря тази единична разпределена опашка с паралелност във всяка MQ платформа?

  4. Redis sub/pub и php/nodejs

  5. Resque, Resque Server, на RedisToGo с Heroku