Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jak redis wygasa klucze?

W skrócie - dla każdego obiektu redis istnieje czas wygaśnięcia. O ile nie ustawisz wygaśnięcia obiektu, ten czas to „nigdy”.

Teraz sam mechanizm wygaśnięcia jest na wpół leniwy. Opóźnione wygaśnięcie oznacza, że ​​nie wygasasz obiektów, dopóki nie zostaną odczytane. Czytając obiekt, sprawdzamy jego datę wygaśnięcia, a jeśli to już przeszłość, nic nie zwracamy i usuwamy obiekt, gdy już przy nim jesteśmy. Ale problem polega na tym, że jeśli klawisz nigdy nie zostanie dotknięty, po prostu zabiera pamięć bez powodu.

Dlatego Redis dodaje drugą warstwę losowego aktywnego wygaśnięcia. Po prostu odczytuje losowe klucze przez cały czas, a po dotknięciu wygasłego klucza jest usuwany w oparciu o leniwy mechanizm. Nie ma to wpływu na zachowanie wygaśnięcia, po prostu dodaje „zbieranie śmieci” wygasłych kluczy.

Oczywiście sama implementacja jest bardziej skomplikowana, ale to jest główna idea.

Więcej na ten temat możesz przeczytać tutaj:http://redis.io/commands/expire

A kod źródłowy aktywnego cyklu wygaśnięcia można znaleźć tutaj: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. Czy Redis używa nazwy użytkownika do uwierzytelniania?

  2. Redis — rozważ zmianę nazwy jednego z ziaren lub włączenie nadpisywania, ustawiając spring.main.allow-bean-definition-overriding=true

  3. jaka jest najlepsza strategia synchronizacji danych między bazą danych a pamięcią podręczną redis?

  4. Jak wizualizować użycie resque za pomocą Node.js, WebSockets i Redis

  5. Czy możemy dołączyć do Redis?