Penyimpanan sesi Magento: Redis vs. Memcached

10

Saya menjalankan Magento EE 1.12.2 (sama dengan CE 1.7.2) di mana kami memiliki Redis untuk caching ( ekstensi Cm_Cache, Redis v 2.2.12 ), tetapi kami menggunakan Memcache untuk penyimpanan sesi.

Redis tidak didukung di luar kotak pada versi Magento ini. Jadi kekhawatiran saya di sini adalah:

  • Apakah sepadan dengan kerumitan untuk memasukkan penyimpanan sesi ke Redis dalam hal upaya vs peningkatan kecepatan?
  • Bukankah Memcache sama baiknya atau bahkan mungkin lebih baik?

Dalam proyek ini kami memiliki file sesi besar karena kami perlu menyimpan file XML pihak ketiga ke dalam sesi, jadi mengoptimalkan sesi membaca dan menulis dapat memiliki dampak yang cukup besar.

Dari local.xml:

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

Dan:

<cache>
    <backend>Cm_Cache_Backend_Redis</backend>
    [...]
</cache>
7ochem
sumber

Jawaban:

11

Sesuai konsep saya, Redis paling baik:

Memcached adalah Free & open source, in-memory key-value store, kinerja tinggi, sistem caching objek memori terdistribusi.

Redis adalah penyimpanan data nilai sumber terbuka, jaringan, dalam-memori, dengan daya tahan opsional.

Karena

  1. Memcached adalah penyimpanan kunci / nilai di memori yang mudah menguap. Redis dapat bertindak seperti satu (dan melakukan pekerjaan itu serta Memcached)
  2. Arsitekturnya cocok untuk menyimpan data lebih cepat.
  3. Data diambil lebih cepat
  4. Kegigihan ke disk, secara default
  5. Nilai hingga ukuran 512MB (Memcached terbatas hingga 1MB per kunci)
  6. Dibangun dalam pengelompokan

Redis tidak mendukung LRU atau kebijakan serupa untuk menangani kelebihan beban Redis tidak mendukung CAS (centang dan set) yang berguna untuk menjaga konsistensi cache - lihat Apa sumber paling umum dari inkonsistensi cache Memcached? (meskipun ada operasi SETNX yang membuat ini tidak perlu)

masukkan deskripsi gambar di sini

Lebih detail: Stackoverflow "Memcached vs. Redis?"

Beberapa detail dengan Redis mendukung data lebih cepat: Redis.io

Amit Bera
sumber
Oke, ini perbandingan yang bagus dan tautannya memberikan banyak informasi tentang perbedaan di antara keduanya. Tetapi apakah benar-benar layak dicoba ketika sudah menggunakan Memcache untuk mengubahnya ke Redis?
7ochem
ya.itu hanya ketika Anda akan menggunakan redis ... Anda menggunakan redis di Magento EE 1.12.2.be
Amit Bera
7ochem, apakah Anda memberi saya suara?
Amit Bera
3
Kontribusi yang luar biasa. memiliki pertanyaan yang sama. menggunakan redis sekarang. bekerja dengan luar biasa di 1 toko, tetapi sedikit kurang efektif di toko lain. Pastikan untuk mencoba memchache juga. @AmitBera dapatkah Anda menumpuk memcache + apc atau redis + apc dan bagaimana tampilan local.xml seperti itu.
Kay Int Veen
3
"Redis tidak mendukung LRU atau kebijakan serupa untuk menangani kelebihan beban" - Anda mungkin ingin melakukannya , kecuali jika Anda bermaksud sesuatu yang berbeda. Juga, karena OP ingin memigrasikan sesi alih-alih cache ke Redis, penggusuran sesi idealnya berbasis waktu bukan berdasarkan ukuran sehingga LRU bukan bonus.
Melvyn
6

CM Redis Cache di 1.7.2 bukan peretasan, Magento hanya menambahkan kode secara default ke 1.8+ karena berfungsi dengan sangat baik dan mudah diimplementasikan.

Redis memiliki dukungan untuk memiliki cache dan sesi dalam instance server yang sama karena database. Dalam memcached Anda mungkin akan memulai beberapa instance memcached.

Memcached juga memiliki kemungkinan untuk menulis ke disk, ini dapat digunakan untuk menyimpan sesi setelah restart layanan. Saat menulis ke disk, memcached dapat memberikan kesalahan pada situs Anda karena itu akan mengunci selama beberapa saat. Redis akan menangani ini dengan lebih baik karena beberapa pertanyaan lain tentang Stack ini sudah diperlihatkan.

Jadi saya akan merekomendasikan Redis lebih dari memcached.

Jeroen
sumber
5

Sayangnya ini bukan jawaban hitam putih. Jadi, saya akan memberi Anda pro dan kontra:

Memcache:

  • batas data hardcoded (jangan membuang masalah ini, sesi admin dapat dengan mudah tumbuh melampaui itu)
  • warung saat menyimpan ke disk
  • kinerja yang sedikit lebih buruk
  • Ekstensi Magento tidak memiliki pertahanan

Redis:

  • Mengunci masalah di Sesi :: baca di beberapa toko, disebabkan oleh akses bersamaan ke sesi.
  • Mendukung banyak basis data dalam satu contoh, tetapi dengan beberapa peringatan.
  • Ekstensi Magento memiliki dukungan untuk bertahan melawan bot dan disertai dengan skrip migrasi
  • Ekstensi Magento memiliki dukungan untuk algoritma kompresi tajam
  • Basis kode lebih dipelihara secara aktif

Sekarang, jika kecepatan adalah satu-satunya masalah Anda, maka jalankan uji beban. Akun gratis di Blazemeter memberi Anda 50 pengguna virtual untuk diajak bekerja sama, yang seharusnya cukup untuk mengukur perbedaannya.

Melvyn
sumber