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

Algorytm dopasowywania użytkowników

Dobrze byłoby wiedzieć, o jakich danych mówimy. Ilu istnieje użytkowników? Ile średnio będzie online? Jaki jest stosunek „widzianych użytkowników” do wszystkich użytkowników (nieliczni kontra gęści)?

Modyfikacja algorytmu Nie otwieraj pierwszego, ale wybierz losowy element z zestawu użytkowników online. Powinno to poprawić równowagę i może pomóc w zamortyzowanej złożoności w zależności od stosunku tych dwóch zestawów!

Algorytm alternatywny (bardziej ustrukturyzowany; nadal zły w najgorszym przypadku; powinien być dobry, jeśli jest rzadki widziany )

  • Zachowaj widoczność jako drzewo zrównoważone (wstawienie O(log n))
  • Zachowaj online jako zrównoważone drzewo.
  • Jeśli wybrano za mało użytkowników:
    • Wyszukaj pierwszą lukę w widzianym (np. [0,1,3,7] -> 2; O(log n) zgodnie z SO-link)
    • Wyszukaj pierwszego użytkownika>=wartość przerwy (O(log n))
    • Jeśli użytkownik
    • -> wybierz
    • Inne
    • -> dodaj wybraną wartość przerwy tymczasowo (w tej chwili; model-decyzja, jak często aktualizować online ) do zobaczenia LUB ogranicz wyszukiwanie do> wybranej-wartości przerwy (O(log n))

W zależności od danych powinno to działać bardzo dobrze, jeśli dane są ogromne i widoczne jest rzadki!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Użyj Redis, aby wygenerować unikalny identyfikator z ograniczonego zakresu

  2. jak sprawdzić wersję instancji redis?

  3. Docker [Errno 111] Połączenie nie powiodło się ('127.0.0.1', 6379)

  4. Rozważ ponowne sprawdzenie wpisów powyżej lub zdefiniowanie w konfiguracji elementu bean typu „org.springframework.data.redis.core.RedisTemplate”

  5. Jak skonfigurować połączenia Redis z Rails 4, Puma i Sidekiq?