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

Zwiększanie setek liczników na raz, redis czy mongodb?

W zależności od tego, jak ułożona jest struktura klucza, polecam potokowanie poleceń cynkr. Masz łatwy wyzwalacz "commit" - żądanie. Jeśli miałbyś iterować nad swoimi parametrami i cynkować każdy klawisz, to na końcu żądania przekaż polecenie wykonania, będzie to bardzo szybkie. Zaimplementowałem system, który opisujesz jako zarówno cgi, jak i aplikację Django. Skonfigurowałem kluczową strukturę w następujący sposób:

RRRR-MM-DD:GG:MM -> posortowany zestaw

I był w stanie przetworzyć coś w rodzaju 150000-200000 przyrostów na sekundę po stronie redis za pomocą jednego procesu, co powinno wystarczyć w opisanym scenariuszu. Ta struktura klucza pozwala mi pobierać dane na podstawie przedziałów czasu. Dodałem również wygaśnięcie kluczy, aby uniknąć pisania procesu czyszczenia bazy danych. Miałem wtedy cronjob, który ustawiałby operacje na „roll-up” statystyki na godzinę, dzień i tydzień, używając wariantów wspomnianego wzorca klucza. Przytaczam te pomysły, ponieważ są one sposobami wykorzystania wbudowanych funkcji Redis, aby uprościć stronę raportowania. Są inne sposoby na zrobienie tego, ale ten wzorzec wydaje się działać dobrze.

Jak zauważył eyossi, blokada globalna może stanowić prawdziwy problem w systemach, które jednocześnie zapisują i odczytują dane. Jeśli piszesz to jako system czasu rzeczywistego, współbieżność może być problemem. Jeśli jest to system analizowania dziennika typu „end if day”, prawdopodobnie nie wywoła on rywalizacji, chyba że uruchomisz wiele wystąpień parsera lub raportów w momencie wprowadzania danych. Jeśli chodzi o utrzymywanie szybkich odczytów W Redis, rozważyłbym skonfigurowanie instancji Redis tylko do odczytu, podporządkowanej głównej. Jeśli umieścisz go na serwerze z uruchomionym raportem i skierujesz na niego proces raportowania, generowanie raportów powinno być bardzo szybkie.

W zależności od dostępnej pamięci, rozmiaru zestawu danych i tego, czy przechowujesz jakikolwiek inny typ danych w wystąpieniu redis, możesz rozważyć uruchomienie 32-bitowego serwera redis, aby zmniejszyć zużycie pamięci. Instancja 32b powinna być w stanie przechowywać wiele tego typu danych w małym kawałku pamięci, ale jeśli uruchomiony normalny 64-bitowy Redis nie zajmuje zbyt dużo pamięci, możesz go użyć. Jak zawsze przetestuj własne wzorce użytkowania, aby je zweryfikować



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Błąd integracji Redis z JHipster CacheConfiguration

  2. Przełączanie awaryjne Redis za pomocą StackExchange / Sentinel z C#

  3. W pełni zarządzany hosting ScaleGrid dla Redis™ już dostępny na platformie Azure

  4. Jak korzystać z posortowanych list Redis

  5. Jak analizować i optymalizować wykorzystanie pamięci w Redis