Redis dan MongoDB dapat digunakan bersama-sama dengan hasil yang baik. Perusahaan yang terkenal menjalankan MongoDB dan Redis (bersama dengan MySQL dan Sphinx) adalah Craiglist. Lihat presentasi ini dari Jeremy Zawodny.
MongoDB menarik untuk data yang persisten, berorientasi dokumen, dan diindeks dalam berbagai cara. Redis lebih menarik untuk data yang mudah menguap, atau data semi-persisten yang sensitif terhadap latensi.
Berikut adalah beberapa contoh penggunaan nyata Redis di atas MongoDB.
-
Pra-2.2 MongoDB belum memiliki mekanisme kedaluwarsa. Koleksi yang dibatasi tidak dapat benar-benar digunakan untuk mengimplementasikan TTL nyata. Redis memiliki mekanisme kedaluwarsa berbasis TTL, membuatnya nyaman untuk menyimpan data yang mudah menguap. Misalnya, sesi pengguna biasanya disimpan di Redis, sedangkan data pengguna akan disimpan dan diindeks di MongoDB. Perhatikan bahwa MongoDB 2.2 telah memperkenalkan mekanisme kedaluwarsa dengan akurasi rendah di tingkat pengumpulan (untuk digunakan misalnya untuk membersihkan data).
-
Redis menyediakan set datatype yang nyaman dan operasi terkaitnya (penyatuan, persimpangan, perbedaan pada beberapa set, dll ...). Cukup mudah untuk menerapkan mesin pencarian atau penandaan segi dasar di atas fitur ini, yang merupakan tambahan menarik untuk kemampuan pengindeksan MongoDB yang lebih tradisional.
-
Redis mendukung operasi pop pemblokiran yang efisien pada daftar. Ini dapat digunakan untuk mengimplementasikan sistem antrian terdistribusi ad-hoc. Ini lebih fleksibel daripada IMO tailable kursor MongoDB, karena aplikasi backend dapat mendengarkan beberapa antrian dengan batas waktu, mentransfer item ke antrian lain secara atom, dll ... Jika aplikasi memerlukan beberapa antrian, masuk akal untuk menyimpan antrian di Redis , dan simpan data fungsional persisten di MongoDB.
-
Redis juga menawarkan mekanisme pub/sub. Dalam aplikasi terdistribusi, sistem propagasi event mungkin berguna. Sekali lagi ini merupakan kasus penggunaan yang sangat baik untuk Redis, sementara data persisten disimpan di MongoDB.
Karena jauh lebih mudah untuk mendesain model data dengan MongoDB daripada dengan Redis (Redis lebih rendah level), menarik untuk memanfaatkan fleksibilitas MongoDB untuk data persisten utama, dan dari fitur tambahan yang disediakan oleh Redis (latensi rendah , kedaluwarsa item, antrian, pub/sub, blok atom, dll ...). Ini memang kombinasi yang bagus.
Harap dicatat Anda tidak boleh menjalankan server Redis dan MongoDB pada mesin yang sama. Memori MongoDB dirancang untuk ditukar, Redis tidak. Jika MongoDB memicu beberapa aktivitas swapping, kinerja Redis akan menjadi bencana besar. Mereka harus diisolasi pada node yang berbeda.