Redis vs Mencached Performance

Memcached atau Redis? Ini pertanyaan yang hampir selalu muncul dalam setiap diskusi tentang meremas performa lebih dari aplikasi Web modern, database-driven. Ketika kinerja perlu ditingkatkan, caching sering langkah pertama yang diambil, dan memcached atau Redis biasanya tempat pertama untuk mengubah.

Mesin cache ini terkenal memiliki sejumlah kesamaan, tetapi mereka juga memiliki perbedaan penting. Redis, yang lebih baru dan lebih fleksibel dari dua, hampir selalu pilihan yang unggul.

Mari kita mulai dengan kesamaan. Kedua memcached dan Redis berfungsi sebagai in-memory, nilai kunci menyimpan data, meskipun Redis lebih tepat disebut sebagai toko struktur data. Kedua memcached dan Redis milik keluarga NoSQL solusi manajemen data, dan keduanya didasarkan pada model data nilai kunci. Mereka berdua menyimpan semua data dalam RAM, yang tentu saja membuat mereka amat berguna sebagai lapisan caching. Dalam hal kinerja, dua toko data juga sangat mirip, menunjukkan hampir karakteristik identik (dan metrik) sehubungan dengan troughput dan latency.

Kedua memcached dan Redis adalah proyek open source yang matang dan sangat populer. Memcached pada awalnya dikembangkan oleh Brad Fitzpatrick pada tahun 2003 untuk situs LiveJournal. Sejak itu, memcached telah ditulis ulang di C (pelaksanaan asli di Perl) dan dimasukkan ke dalam domain publik, di mana ia telah menjadi landasan aplikasi Web modern. Perkembangan saat memcached difokuskan pada stabilitas dan optimasi daripada menambahkan fitur baru.

Redis diciptakan oleh Salvatore Sanfilippo pada tahun 2009, dan Sanfilippo tetap pengembang utama dari proyek ini. Redis kadang-kadang digambarkan sebagai "Memcached pada steroid," yang tidak mengherankan mengingat bahwa bagian dari Redis dibangun dalam menanggapi pelajaran dari menggunakan memcached. Redis memiliki fitur lebih dari memcached dan, dengan demikian, lebih kuat dan fleksibel.

Digunakan oleh banyak perusahaan dan di banyak mission-critical lingkungan produksi, baik memcached dan Redis yang didukung oleh perpustakaan klien dalam setiap bahasa pemrograman dibayangkan, dan itu termasuk dalam banyak paket untuk pengembang. Bahkan, itu adalah Web tumpukan langka yang tidak termasuk built-in mendukung untuk baik memcached atau Redis.

Mengapa Memcached dan Redis begitu populer? Bukan saja mereka sangat efektif, mereka juga relatif sederhana. Memulai dengan baik memcached atau Redis dianggap pekerjaan mudah bagi pengembang. Dibutuhkan hanya beberapa menit untuk menyiapkan dan membuat mereka bekerja dengan aplikasi. Dengan demikian, investasi kecil waktu dan usaha dapat memiliki langsung, dampak yang dramatis pada kinerja - biasanya dengan perintah besarnya. Sebuah solusi sederhana dengan manfaat yang sangat besar; itu sebagai dekat dengan sihir seperti yang Anda dapatkan.

Kapan menggunakan memcached

Karena Redis baru dan memiliki fitur lebih dari memcached, Redis hampir selalu pilihan yang lebih baik. Namun, memcached bisa lebih ketika caching data yang relatif kecil dan statis, seperti fragmen kode HTML. manajemen memori internal memcached, sementara tidak canggih seperti yang dari Redis, lebih efisien dalam kasus penggunaan sederhana karena mengkonsumsi sumber daya yang relatif lebih sedikit memori untuk metadata. String (satu-satunya jenis data yang didukung oleh memcached) yang ideal untuk menyimpan data yang hanya membaca, karena string tidak memerlukan pengolahan lebih lanjut.

Yang mengatakan, efisiensi manajemen memori memcached ini berkurang dengan cepat ketika ukuran data dinamis, di mana memori titik memcached dapat menjadi terpecah-pecah. Juga, set data yang besar sering melibatkan data serial, yang selalu membutuhkan lebih banyak ruang untuk menyimpan. Sementara memcached secara efektif terbatas menyimpan data dalam bentuk serial nya, struktur data di Redis dapat menyimpan segala aspek dari data native, sehingga mengurangi serialisasi overhead.

Kedua skenario di mana memcached memiliki keuntungan lebih Redis adalah di scaling. Karena memcached multithreaded, Anda dapat dengan mudah meningkatkan dengan memberikan lebih banyak sumber daya komputasi, tetapi Anda akan kehilangan sebagian atau seluruh data cache (tergantung pada apakah Anda menggunakan hashing konsisten). Redis, yang sebagian besar single-threaded, dapat skala horizontal melalui pengelompokan tanpa kehilangan data. Clustering adalah solusi skala yang efektif, tetapi relatif lebih kompleks untuk mendirikan dan mengoperasikan.

Kapan menggunakan Redis

Anda akan hampir selalu ingin menggunakan Redis karena struktur datanya. Dengan Redis sebagai cache, Anda mendapatkan banyak daya (seperti kemampuan untuk menyempurnakan isi cache dan daya tahan) dan efisiensi yang lebih besar secara keseluruhan. Setelah Anda menggunakan struktur data, dorongan efisiensi menjadi luar biasa untuk skenario aplikasi tertentu.

superioritas Redis 'jelas di hampir setiap aspek manajemen cache. Cache mempekerjakan mekanisme yang disebut Data penggusuran untuk membuat ruang untuk data baru dengan menghapus data lama dari memori. Mekanisme Data penggusuran memcached mempekerjakan algoritma Least Baru Digunakan dan agak sewenang-wenang evicts data yang ukurannya sama dengan data baru.

Redis, sebaliknya, memungkinkan untuk kontrol halus lebih penggusuran, membiarkan Anda memilih dari enam kebijakan penggusuran yang berbeda. Redis juga mempekerjakan pendekatan yang lebih canggih untuk manajemen memori dan seleksi calon penggusuran. Redis mendukung malas dan aktif penggusuran, dimana data diusir hanya ketika lebih banyak ruang yang diperlukan atau proaktif. Memcached, di sisi lain, memberikan penggusuran malas saja.

Redis memberi Anda fleksibilitas yang lebih besar mengenai benda-benda Anda bisa cache. Sementara memcached membatasi nama kunci untuk 250 byte dan bekerja dengan string polos saja, Redis memungkinkan nama kunci dan nilai-nilai untuk menjadi besar seperti 512MB masing-masing, dan mereka aman biner. Plus, Redis memiliki lima struktur data utama untuk memilih dari, membuka sebuah dunia kemungkinan untuk pengembang aplikasi melalui caching cerdas dan manipulasi data cache.

Di luar caching

Menggunakan struktur data Redis dapat menyederhanakan dan mengoptimalkan beberapa tugas - tidak hanya saat caching, tetapi bahkan ketika Anda ingin data yang gigih dan selalu tersedia. Misalnya, alih-alih menyimpan objek sebagai string serial, pengembang dapat menggunakan Redis Hash untuk menyimpan bidang dan nilai-nilai obyek, dan mengatur mereka menggunakan satu tombol. Redis Hash menghemat pengembang kebutuhan untuk mengambil seluruh string, deserialize, memperbarui nilai, reserialize objek, dan mengganti seluruh string dalam cache dengan nilai baru untuk setiap update sepele - yang berarti konsumsi sumber daya yang lebih rendah dan peningkatan kinerja. (infoworld)