Memcached vs. Redis porównywany

Memcached vs. Redis porównywany
Istnieją dwie konkurencyjne opcje dla baz danych pary kluczowych w pamięci; Redis i Memcached. Oba są bezpłatnymi bazami danych w pamięci typu open source, które zapewniają niskie opóźnienie dostępu do danych.

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:

  1. Smyczki
  2. Listy
  3. Zestawy
  4. Hashes
  5. Sortowane zestawy
  6. Bitmap
  7. Hiperlogi
  8. Indeksy geoprzestrzenne
  9. Strumienie

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:

  1. Trwałość RDB
  2. Aof trwałość.

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:

  • ActionScript
  • ActiveX/Com+
  • Grzmotnąć
  • BOMI
  • C
  • C#
  • C++
  • Clojure
  • Common Lisp
  • Kryształ
  • D
  • Strzałka
  • Delphi
  • Eliksir
  • Emacs Lisp
  • Erlang
  • Wymyślny
  • gapić się
  • GNU Prolog
  • Iść
  • Haskell
  • Haxe
  • Io
  • Jawa
  • Julia
  • Kotlin
  • Lasso
  • Lua
  • Matlab
  • Mruby
  • Nim
  • Węzeł.JS
  • Cel C
  • Ocaml
  • Pascal
  • Perl
  • Php
  • PL/SQL
  • Prolog
  • Czyste dane
  • Pyton
  • R
  • Rakieta
  • Rebol
  • Rubin
  • Rdza
  • Scala
  • Schemat
  • Pogawędka
  • Szybki
  • Tcl
  • VB
  • Vcl
  • Xojo

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ą:

  • .INTERNET
    • Enyim
    • Beit
  • C
    • libmemcached
  • C++
    • Libmemcached
    • MCACHE-CLIENT
  • Zimna fuzja
    • CFspymemCached
  • Erlang
    • Kotwica
  • Eliksir
    • Memcache
  • Jawa
    • Spymemcached
    • Xmemcached
    • Klient Gwwhalin Memcached
  • Seplenienie
    • CL-Memcached
  • Lua
    • Lua-Resty-Memcached
  • Ocaml
    • Ocaml-Memcached
  • Perl
    • Perl-Cache-Memcached
  • Php
    • Memcached-php
    • Memcached
    • PHP-Memcached
  • Pyton
    • Pymemcache
    • Python-Memcached

Wsparcie w chmurze

Następujący dostawcy chmury obsługują Redis:

  1. Google Cloud jako pamięć
  2. Amazon AWS jako Redis
  3. Microsoft Azure jako pamięć podręczna Azure
  4. Alibaba Cloud jako Asparadb
  5. Wyrocznia
  6. IBM Cloud

Następujący dostawcy obsługują również Memcached:

  1. Google Cloud jako pamięć
  2. Amazon AWS jako Amazon Elasticachach
  3. Microsoft Azure
  4. Alibaba Cloud jako Asparadb
  5. IBM Cloud jako memcached by Bitnami

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!!!