Kapan harus menggunakan key / value store seperti Redis sebagai gantinya / di sisi database SQL?


166

Saya telah membaca hal-hal hebat tentang toko-toko utama / nilai seperti Redis tapi sepertinya saya tidak tahu kapan saatnya menggunakannya dalam aplikasi.

Katakanlah saya sedang merancang aplikasi berbasis web; Saya tahu tumpukan apa yang akan saya gunakan untuk front-end, back-end, database (s), dll. Apa beberapa skenario di mana saya akan pergi "oh kita juga perlu Redis untuk X, Y, atau Z."

Saya akan menghargai contoh node.js dan juga contoh non-node.js.


Jawaban:


102

Sepertinya saya tidak tahu kapan saatnya menggunakannya dalam suatu aplikasi.

Saya akan merekomendasikan Anda untuk membaca tutorial ini yang juga berisi kasus penggunaan. Karena redis lebih berorientasi pada memori, itu sangat baik untuk data real-time yang sering diperbarui, seperti penyimpanan sesi, basis data negara, statistik, caching dan struktur data lanjutannya menawarkan fleksibilitas untuk banyak skenario lainnya.

Redis, bagaimanapun, bukan pengganti NoSQL untuk database relasional klasik karena tidak mendukung banyak fitur standar dunia RDBMS seperti permintaan data Anda yang mungkin memperlambatnya. Penggantian agak mendokumentasikan basis data seperti MongoDB atau CouchDB dan redis sangat bagus dalam melengkapi fungsionalitas spesifik di mana kecepatan dan dukungan untuk struktur data tingkat lanjut sangat berguna.


3
Tutorial yang Anda tautkan luar biasa!
Chris Abrams

5
Saya melakukan pencarian Google cepat dengan URL situs tutorial itu dan menemukan ini sebagai hit teratas - slideshare.net/dvirsky/introduction-to-redis-version-2
Paul

66

Saya pikir tidak ada yang menjelaskan lebih baik kasus penggunaan untuk Redis daripada artikel ini: http://antirez.com/post/take-keuntungan-dari-redis-adding-it-untuk-anda-Anda-stack.html

Saya yakin Anda akan memiliki aha! momen . ;)

Kutipan dari pembaca sebelumnya:

Saya telah membaca tentang Redis sebelumnya dan mendengar bagaimana perusahaan menggunakannya, tetapi tidak pernah sepenuhnya memahami tujuannya. Setelah membaca ini saya benar-benar bisa mengatakan saya mengerti Redis sekarang dan bagaimana ini berguna. Luar biasa bahwa setelah mendengar begitu banyak tentang itu semua hanya butuh artikel yang relatif sederhana.

Kutipan dari artikel:

Redis berbeda dari solusi database lain dalam banyak hal: ia menggunakan memori sebagai dukungan penyimpanan utama dan disk hanya untuk kegigihan, model data cukup unik, single-threaded dan sebagainya. Saya pikir perbedaan besar lainnya adalah bahwa untuk memanfaatkan Redis di lingkungan produksi Anda, Anda tidak perlu beralih ke Redis. Anda bisa menggunakannya untuk melakukan hal-hal baru yang sebelumnya tidak mungkin, atau untuk memperbaiki masalah lama.

Gunakan case yang disentuh oleh artikel:

  • Lambat daftar barang terbaru di halaman rumah Anda
  • Papan dan masalah terkait
  • Dipesan berdasarkan pilihan dan waktu pengguna
  • Implement kedaluwarsa pada item
  • Menghitung barang
  • Item N unik dalam jumlah waktu tertentu
  • Analisis waktu nyata tentang apa yang terjadi, untuk statistik, anti spam, atau apa pun
  • Pub / Sub
  • Antrian
  • Caching

Artikel ini sangat berguna, saya memiliki apa yang ingin saya ketahui
Hos Mercury

@ Zenw0lf Apakah redis masih yang terbaik untuk caching sederhana? Posting Anda dari 2011, jadi tidak yakin apakah ada hal lain yang harus saya gunakan.
Moondra

@ Moondra Ya, proyek ini masih sangat hidup dan penciptanya sering membuat rilis. Ini masih merupakan proyek luar biasa untuk berbagai skenario penggunaan!
zenw0lf

@ zenw0lf Artikel bagus tapi saya masih agak bingung dalam beberapa kasus penggunaan. Misalnya case use "item terbaru", mengapa lebih baik menambahkan Redis dalam case ini? apa yang ada di database kami tambahkan dalam tabel tertentu hanya untuk memiliki id pengguna, komentar (id), dan / atau cap waktu, dan menggunakan ini secara langsung. Bukankah ini sama?
Tony Lin

1
@TonyLin Keduanya, cepat karena ada di dalam memori dan karena Redis juga memiliki implementasi model data mutakhir yang cukup bagus untuk membantunya melakukan tugasnya sebaik mungkin.
zenw0lf

9
  • Saya ingin menggunakan redis pada proyek waktu nyata. Saya lakukan baru-baru ini untuk satu sistem pelacakan gps yang sebelumnya dibangun di mysql sebagai database.

    KEUNTUNGAN

    1. Setiap kali pelacak menyiarkan data, saya tidak perlu membuka koneksi mysql dan menyimpannya. Kita dapat menyimpannya di redis dan kemudian bermigrasi ke mysql menggunakan beberapa proses lain. Ini akan menghindari koneksi bersamaan dari pelacak mutiple ke mysql.
    2. Saya dapat menerbitkan semua data gps dan klien lain (javascript / android) dapat berlangganan secara real time menggunakan antrian pesan berdasarkan redis
    3. Saya dapat memicu peringatan waktu nyata

3

Satu hal yang tidak disadari adalah bahwa Redis bukan database relasional. Jika Anda membutuhkan SQL "GABUNG" maka Anda tidak ingin menggunakan Redis, atau basis data non-relasional lainnya. Redis lebih cepat daripada kebanyakan database relasional. Jika Anda hanya akan melakukan kunci: kueri pasangan nilai, maka Anda ingin menggunakan Redis.


Jadi misalnya, apakah sebaiknya menggunakan redis untuk informasi mengenai sesi pengguna sehingga lebih cepat untuk mengakses nama, email, ID, dll?
Chris Abrams

Saya akan berpikir begitu. Kabinet Kyoto akan lebih cepat untuk itu, saya pikir.
EhevuTov
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.