หน่วยเก็บข้อมูลเซสชันคุณภาพเยี่ยม: Redis vs. Memcached


10

ฉันใช้ Magento EE 1.12.2 (เท่ากันใน CE 1.7.2) โดยที่เรามี Redis สำหรับการแคช ( ส่วนขยาย Cm_Cache, Redis v 2.2.12 ) แต่เราใช้ Memcache สำหรับที่เก็บข้อมูลเซสชัน

Redis ไม่ได้รับการสนับสนุนนอกกรอบใน Magento เวอร์ชันเหล่านี้ ดังนั้นความกังวลของฉันที่นี่คือ:

  • คุ้มค่าหรือไม่ที่จะต้องเพิ่มพื้นที่เก็บข้อมูลลงใน Redis ในแง่ของความพยายามและการปรับปรุงความเร็ว?
  • Memcache ไม่ดีหรืออาจจะดีกว่านี้หรือ

ในโครงการนี้เรามีไฟล์เซสชันขนาดใหญ่เนื่องจากเราจำเป็นต้องจัดเก็บไฟล์ XML ของบุคคลที่สามไว้ในเซสชันดังนั้นการเพิ่มประสิทธิภาพการอ่านและเขียนของเซสชันอาจส่งผลกระทบอย่างมาก

จากlocal.xml:

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

และ:

<cache>
    <backend>Cm_Cache_Backend_Redis</backend>
    [...]
</cache>

คำตอบ:


11

ตามแนวคิดของฉัน Redis ดีที่สุด:

Memcachedเป็นที่เก็บข้อมูลฟรี & โอเพ่นซอร์สการเก็บคีย์ - ค่าในหน่วยความจำประสิทธิภาพสูงระบบแคชหน่วยความจำแบบกระจาย

Redisเป็นแหล่งข้อมูลโอเพ่นซอร์สเครือข่ายในหน่วยความจำคีย์ - ค่าพร้อมความทนทานเสริม

เพราะว่า

  1. Memcached เป็นที่เก็บคีย์ / ค่าหน่วยความจำที่ระเหยได้ Redis สามารถทำตัวเป็นหนึ่งเดียว (และทำงานเช่นเดียวกับ Memcached)
  2. มันเป็นสถาปัตยกรรมที่เหมาะสำหรับการบันทึกข้อมูลได้เร็วขึ้น
  3. ดึงข้อมูลได้เร็วขึ้น
  4. การคงอยู่ของดิสก์เป็นค่าเริ่มต้น
  5. ค่าสูงสุดถึง 512MB (Memcached จำกัด ที่ 1MB ต่อคีย์)
  6. สร้างขึ้นในการจัดกลุ่ม

Redis ไม่รองรับ LRU หรือนโยบายที่คล้ายคลึงกันในการจัดการโอเวอร์โหลด Redis ไม่รองรับ CAS (ตรวจสอบและตั้งค่า) ซึ่งมีประโยชน์สำหรับการรักษาความสอดคล้องของแคช - ดูแหล่งที่มาที่พบบ่อยที่สุดของ Memcached cache คืออะไร (แม้ว่าจะมีการดำเนินการ SETNX ที่ทำให้สิ่งนี้ไม่จำเป็น)

ป้อนคำอธิบายรูปภาพที่นี่

รายละเอียดเพิ่มเติม: Stackoverflow "Memcached vs. Redis?"

รายละเอียดบางอย่างกับ Redis รองรับข้อมูลได้เร็วขึ้น: Redis.io


ตกลงมันเป็นการเปรียบเทียบที่ดีและลิงค์ให้ข้อมูลที่แตกต่างกันมากระหว่างสองสิ่งนี้ แต่ที่จริงแล้วมันคุ้มค่ากับการลองใช้ Memcache เพื่อเปลี่ยนเป็น Redis อยู่แล้ว?
7ochem

yes.it เพียงแค่คุณจะใช้ redis ... คุณใช้ redis บน Magento EE 1.12.2.be
Amit Bera

7ochem คุณให้ฉันลงคะแนนบ้างไหม?
Amit Bera

3
ผลงานยอดเยี่ยม มีคำถามเดียวกัน ใช้ redis ตอนนี้ ทำงานได้อย่างยอดเยี่ยมบน 1 ร้านค้า แต่มีประสิทธิภาพน้อยกว่ากัน อย่าลืม memchache ด้วยเช่นกัน @AmitBera คุณสามารถกอง memcache + apc หรือ redis + apc และวิธีที่ local.xml จะมีลักษณะอย่างไร
Kay Int Veen

3
"Redis ไม่สนับสนุน LRU หรือนโยบายที่คล้ายคลึงกันในการจัดการโอเวอร์โหลด" - คุณอาจต้องการที่จะดำเนินการดังกล่าวเว้นแต่ว่าคุณหมายถึงสิ่งที่แตกต่าง นอกจากนี้เนื่องจาก OP ต้องการค้นหาการย้ายเซสชันแทนแคชไปยัง Redis การไล่เซสชันนั้นไม่ได้ขึ้นอยู่กับขนาดเวลาดังนั้น LRU จึงไม่ใช่โบนัส
Melvyn

6

CM Redis Cache ใน 1.7.2 ไม่ใช่แฮ็ควีโอไอพีเพิ่งเพิ่มโค้ดตามค่าเริ่มต้นที่ 1.8+ เพราะมันใช้งานได้ดีและนำไปใช้งานได้ง่าย

Redis มีการสนับสนุนให้มีแคชและเซสชันในอินสแตนซ์เซิร์ฟเวอร์เดียวกันเนื่องจากฐานข้อมูล ใน memcached คุณอาจจะเริ่ม memcached หลายอินสแตนซ์

Memcached ยังมีความเป็นไปได้ที่จะเขียนลงดิสก์ซึ่งสามารถใช้เพื่อบันทึกเซสชันหลังจากรีสตาร์ทบริการ เมื่อเขียนไปที่ดิสก์ memcached สามารถให้ข้อผิดพลาดในเว็บไซต์ของคุณเพราะมันจะล็อคสักครู่ Redis จะจัดการกับสิ่งนี้ได้ดีกว่าเนื่องจากคำถามอื่น ๆ ในสแต็กนี้แสดงอยู่แล้ว

ดังนั้นฉันจะแนะนำ Redis มากกว่า memcached


5

น่าเสียดายที่นี่ไม่ใช่คำตอบขาวดำ ดังนั้นฉันจะให้คุณเป็นมืออาชีพและข้อเสีย:

memcache:

  • ขีด จำกัด ข้อมูล hardcoded (อย่าทิ้งปัญหานี้เซสชันผู้ดูแลระบบสามารถเติบโตได้มากกว่านั้น)
  • แผงลอยเมื่อบันทึกลงดิสก์
  • ประสิทธิภาพที่แย่ลงเล็กน้อย
  • การขยายวีโอไอพีไม่มีการป้องกันจากบ็อต

Redis:

  • ปัญหาการล็อคในเซสชัน :: อ่านในร้านค้าบางอันเกิดจากการเข้าถึงเซสชันพร้อมกัน
  • รองรับหลายฐานข้อมูลในอินสแตนซ์เดียว แต่มีข้อ จำกัด บางประการ
  • ส่วนขยายของวีโอไอพีนั้นรองรับการป้องกันบอทและมาพร้อมกับสคริปต์การย้ายข้อมูล
  • นามสกุลวีโอไอพีมีการสนับสนุนอัลกอริทึมการบีบอัดเร็ว
  • บำรุงรักษาฐานรหัสอย่างแข็งขันยิ่งขึ้น

ทีนี้ถ้าความเร็วเป็นสิ่งที่คุณกังวลเพียงแค่ทำการทดสอบโหลด บัญชีฟรีที่Blazemeterช่วยให้คุณมีผู้ใช้งานเสมือน 50 คนซึ่งควรเพียงพอที่จะวัดความแตกต่าง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.