Pomimo tych podobieństw może być trudnym wyzwaniem, które można wybrać w swoich aplikacjach.
W tym artykule rozbijemy podstawowe aspekty bazy danych w pamięci i porównajmy je.
Definicja
Zacznijmy od podstaw i przedyskutujmy, co to jest Redis i co jest memcached?
Co to jest Redis?
Zdalny serwer słownika lub Redis w skrócie jest zdefiniowany jako bezpłatna baza danych w pamięci otwartej źródła używana jako broker pamięci podręcznej lub wiadomości. Został opracowany w 2009 roku przez Salvatore Sanfilippo, a teraz napędza popularne systemy, takie jak Twitter, Stackoverflow, Github itp.
Co jest memcached?
Memcached jest definiowany jako bezpłatna, open source i wysokowydajna baza danych. Służy do zapewnienia mechanizmu buforowania zastosowań, ale działa ogólnie.
Został opracowany w 2004 roku przez Brad Fitzpatrick i jest obecnie używany przez popularne aplikacje, takie jak Twitter, Facebook, YouTube, Instagram, Udemy, Slack itp.
Obsługa języka i platformy
Redis jest napisany w ANSI C i pracuje we wszystkich systemach POSIX. Redis jest obsługiwany w systemach Linux, BSD i OSX. Obsługa systemu Windows nie jest jeszcze dostępna po pisaniu tego samouczka.
Memcached jest napisane w ANSI C, ale cross-platform. Chociaż nie ma oficjalnej wersji memcached dla systemu Windows, można znaleźć implementacje Cygwin w bazie danych lub skompilować dla Twojej platformy.
Przechowywanie danych
Redis ma wiele struktur danych, które są bardzo odpowiednie dla wielu potrzeb. Obsługuje typy danych, takie jak:
Redis pozwala również wykonywać automatyczne operacje, takie jak dołączenie do ciągów, obliczanie zestawu SET, Różnica, Przecięcie itp., dołączenie elementu do listy itp.
Z drugiej strony memcached obsługuje proste struny binarne. To ułatwia użycie i wykorzystuje mniej kosztów pamięci niż Redis.
Architektura
Zarówno Redis, jak i Memcached śledzą architekturę klient-serwer. Jednak Redis jest jednolitą, podczas gdy memcached jest wielokrotny.
Partycjonowanie danych
Zarówno Redis, jak i Memcached obsługują rozkład danych w różnych węzłach.
Czas oczekiwania
Ponieważ zarówno Redis, jak i Memcached są bazami danych w pamięci, zapewniają opóźnienie podrzędne.
Oczyszczanie pamięci podręcznej
Redis i Memcached pozwalają wyczyścić pamięć podręczną za pomocą poleceń Flushall lub FlushAdb i Flush_All.
Skalowalność
Zarówno Redis, jak i Memcached pozwalają skalować wraz ze wzrostem danych. Jednak Redis skaluje się dobrze poziomo, podczas gdy memcached korzyści dobrze na skalowalności pionowej
Polityka eksmisji
Redis obsługuje zbiór zasad eksmisji, które można dostosować zgodnie z Twoimi potrzebami.
Sprawdź nasz samouczek dotyczący zasad eksmisji Redis, aby dowiedzieć się więcej.
Z drugiej strony Memcached jest ograniczony do polityki eksmisji LRU.
Łatwość użycia/dokumentacja
Redis jest bardzo dobrze dokumentacją i ma za sobą dużą społeczność. To sprawia, że bardzo łatwo jest się nauczyć i używać.
Chociaż memcached jest ogólny i stosunkowo udokumentowany, może być konieczne wykopanie w kodzie źródłowym, aby wdrożyć niestandardowe funkcje.
Zarządzania bazami danych
Redis zapewnia wbudowane narzędzie CLI do dostępu i zarządzania bazami danych i serwerem Redis.
Memcached używa Telnet do łączenia i zarządzania swoim serwerem.
Protokół komunikacyjny
Redis używa protokołu połączenia TCP lub gniazda podobnych do UNIX bez obsługi UDP.
Memcached obsługuje zarówno protokoły TCP, jak i UDP.
Replikacja
Redis oferuje prostą implementację replikacji mistrzów. Używanie i konfigurowanie i konfigurowanie. Replikacja utworzy dokładne kopie instancji głównej, niezależnie od tego, co stanie się z Mistrzem.
Memcached nie natywnie obsługuje replikacji. Możesz jednak zaimplementować replikację danych za pomocą narzędzi łatek, takich jak http: // repCached.laboratorium.Klab.org/
Trwałość/migawki
Redis natywnie obsługuje migawkę, zapisując migawkę zestawów danych na dysku w pliku binarnym. Możesz jednak dostosować funkcje migawki w Redis.plik CONF.
W przypadku wytrwałości Redis obsługuje:
Sprawdź nasz samouczek na temat wytrwałości Redis, aby dalej odkrywać.
Memcached nie natywnie obsługuje zrzut dysku. Możesz jednak użyć narzędzi takich jak memcached-DD do wdrożenia.
Nie ma trwałości danych dla memcached.
Skrypty po stronie serwera
Redis obsługuje skrypty po stronie serwera za pomocą wbudowanego interpretera LUA. Wykorzystuje funkcje eval i evalsha do oceny skryptów lua.
Pamiętaj, że skrypty Lua w Redis są synchroniczne. Stąd inne operacje są blokowane podczas wykonywania skryptów.
Memcached nie obsługuje skryptów po stronie serwera.
Pub/sub
Redis natywnie obsługuje model przesyłania wiadomości subskrybowania publikowania.
Memcached nie ma wsparcia dla modelu przesyłania wiadomości pubowych.
Strumienie
Redis obsługuje strumienie z dodaniem typów strumieni Redis w wersji Redis w wersji 5.0
Memcached nie natywnie obsługuje strumienie. Możesz jednak użyć narzędzi takich jak kafcache do implementacji strumieni.
https: // github.com/jpzk/kafcache
Wsparcie geoprzestrzenne
Redis ma natywną obsługę danych geoprzestrzennych w czasie rzeczywistym. Jednak Memcached nie ma struktury danych do obsługi danych geoprzestrzennych.
Zarządzanie transakcjami
Chociaż memcached używa operacji atomowych, nie obsługuje transakcji.
Domyślnie Redis obsługuje transakcje w celu wykonywania poleceń.
Klienci/języki programowania
Redis obsługuje prawie wszystkie główne języki programowania. Obsługiwane listy klientów są jak pokazano poniżej:
Memcached nie pozostaje w tyle i zapewnia klientom główne języki programowania. Jest jednak krótko na liście klientów w porównaniu do Redis.
Zawierają:
Wsparcie w chmurze
Następujący dostawcy chmury obsługują Redis:
Następujący dostawcy obsługują również Memcached:
Końcowe przemyślenia.
Ten samouczek zawiera kompleksowy podział podobieństw i różnic w bazach danych Redis i Memcached. Należy pamiętać, że ten samouczek służy jako odniesienie do informacji. Użyj go, aby dokonać wyboru na podstawie twoich wymagań.
Szczęśliwe kodowanie i do zobaczenia w następnym!!!