Pamięć sesji Magento: Redis vs. Memcached

10

Używam Magento EE 1.12.2 (jednakowo w CE 1.7.2), gdzie mamy Redis do buforowania ( rozszerzenie Cm_Cache, Redis v 2.2.12 ), ale używamy Memcache do przechowywania sesji.

Redis nie jest obsługiwany od razu w tych wersjach Magento. Więc moim problemem tutaj jest:

  • Czy warto kłopotać się przechowywaniem sesji w Redis pod względem nakładu pracy i szybkości?
  • Czy Memcache nie jest tak dobry, a może nawet lepszy?

W tym projekcie mamy duże pliki sesji, ponieważ musimy przechowywać w niej pliki XML innych firm, więc optymalizacja odczytu i zapisu sesji może mieć znaczący wpływ.

Od local.xml:

<session_save><![CDATA[memcache]]></session_save>

I:

<cache>
    <backend>Cm_Cache_Backend_Redis</backend>
    [...]
</cache>
7ochem
źródło

Odpowiedzi:

11

Zgodnie z moją koncepcją Redis jest najbardziej dobry:

Memcached to darmowy i otwarty program do przechowywania kluczy i wartości w pamięci, wydajny system buforowania obiektów pamięci rozproszonej.

Redis to open-source, połączony w sieć i przechowywany w pamięci magazyn danych o kluczowej wartości z opcjonalną trwałością.

Z powodu

  1. Memcached to ulotny magazyn kluczy / wartości w pamięci. Redis może zachowywać się jak jeden (i wykonywać tę pracę, jak również Memcached)
  2. Jego architektura jest odpowiednia do szybszego zapisywania danych.
  3. Pobieranie danych jest szybsze
  4. Trwałość na dysku, domyślnie
  5. Wartości do 512 MB (Memcached ograniczone do 1 MB na klucz)
  6. Wbudowany w klastrowanie

Redis nie obsługuje LRU ani żadnych podobnych zasad dotyczących obsługi przeciążenia Redis nie obsługuje CAS (sprawdź i ustaw), co jest przydatne do utrzymania spójności pamięci podręcznej - zobacz Jakie są najczęstsze źródła niespójności pamięci podręcznej Memcached? (chociaż istnieje operacja SETNX, która sprawia, że ​​nie jest to konieczne)

wprowadź opis zdjęcia tutaj

Więcej informacji: Stackoverflow „Memcached vs. Redis?”

Niektóre szczegóły szybszej obsługi danych Redis: Redis.io

Amit Bera
źródło
Ok, to miłe porównanie, a link zawiera wiele informacji o różnicach między nimi. Ale czy naprawdę warto spróbować, gdy już używasz Memcache, aby zmienić go na Redis?
7ochem
tak. działa tylko wtedy, gdy będziesz używać redis ... Używasz redis na Magento EE 1.12.2.be
Amit Bera
7ochem, oddałeś mi głos?
Amit Bera
3
Świetny wkład. miał to samo pytanie. używając teraz redis. działa znakomicie w jednym sklepie, ale nieco mniej skuteczny w innym. wypróbuj też memchache. @AmitBera można układać w stosy memcache + apc lub redis + apc i jak wyglądałby wtedy plik local.xml.
Kay Int Veen,
3
„Redis nie obsługuje LRU ani żadnych podobnych zasad radzenia sobie z przeciążeniem” - możesz chcieć to skreślić , chyba że masz na myśli coś innego. Ponadto, ponieważ OP chce migrować sesje zamiast pamięci podręcznej do Redis, eksmisja sesji idealnie opiera się na czasie, a nie na wielkości, więc LRU nie jest bonusem.
Melvyn
6

Pamięć podręczna CM Redis w wersji 1.7.2 nie jest włamaniem, Magento po prostu domyślnie dodał kod do wersji 1.8+, ponieważ działa tak dobrze i łatwo go zaimplementować.

Redis obsługuje pamięć podręczną i sesję w tej samej instancji serwera z powodu baz danych. W memcached prawdopodobnie uruchomiłbyś wiele instancji memcached.

Memcached ma również możliwość zapisu na dysk, można go użyć do zapisania sesji po ponownym uruchomieniu usługi. Podczas zapisywania na dysk memcached może powodować błędy w Twojej witrynie, ponieważ zostanie zablokowany na kilka chwil. Redis poradzi sobie z tym lepiej, jak pokazano już kilka innych pytań na tym Stosie.

Więc poleciłbym Redis ponad memcached.

Jeroen
źródło
5

To niestety nie jest czarno-biała odpowiedź. Więc dam ci zalety i wady:

Memcache:

  • zakodowany na stałe limit danych (nie odrzucaj tego problemu, sesje administracyjne mogą z łatwością przekroczyć ten limit)
  • zatrzymuje się podczas zapisywania na dysku
  • nieco gorsza wydajność
  • Rozszerzenie Magento nie ma obrony przed botami

Redis:

  • Blokowanie problemów w Sesji :: odczyt w niektórych sklepach, spowodowanych jednoczesnym dostępem do sesji.
  • Obsługa wielu baz danych w jednym wystąpieniu, ale z pewnymi zastrzeżeniami.
  • Rozszerzenie Magento obsługuje obronę przed botami i zawiera skrypty migracji
  • Rozszerzenie Magento obsługuje algorytm szybkiej kompresji
  • Bardziej aktywnie utrzymywana baza kodu

Teraz, jeśli prędkość jest twoim jedynym zmartwieniem, po prostu uruchom test obciążenia. Bezpłatne konto w Blazemeter umożliwia pracę z 50 wirtualnymi użytkownikami, co powinno wystarczyć do zmierzenia różnic.

Melvyn
źródło