Saya telah membaca beberapa dokumen Redis dan mencoba tutorialnya di http://try.redis-db.com/ . Sejauh ini, saya tidak bisa melihat perbedaan antara Redis dan teknologi caching seperti Velocity atau Framework Caching Perpustakaan Perusahaan
Anda secara efektif hanya menambahkan objek ke penyimpanan data dalam memori menggunakan kunci unik. Sepertinya tidak ada semantik relasional ...
Apa yang saya lewatkan?
Jawaban:
Tidak, Redis lebih dari sekadar cache.
Seperti Cache, Redis menyimpan kunci = pasangan nilai. Tetapi tidak seperti cache, Redis memungkinkan Anda beroperasi pada nilai-nilai. Ada 5 tipe data dalam Redis - String, Set, Hash, Daftar dan Set Diurutkan. Setiap tipe data memperlihatkan berbagai operasi.
Cara terbaik untuk memahami Redis adalah memodelkan suatu aplikasi tanpa memikirkan bagaimana Anda akan menyimpannya dalam database.
Katakanlah kita ingin membangun StackOverflow.com. Untuk membuatnya sederhana, kita membutuhkan Pertanyaan, Jawaban, Tag dan Pengguna.
Pertanyaan Modeling, Pengguna dan Jawaban
Setiap objek dapat dimodelkan sebagai Peta. Misalnya, Pertanyaan adalah peta dengan bidang {id, judul, date_asked, suara, asked_by, status}. Demikian pula, sebuah Jawaban adalah peta dengan bidang {id, question_id, answer_text, answer_by, suara, status}. Demikian pula, kita dapat memodelkan objek pengguna.
Masing-masing benda ini dapat langsung disimpan di Redis sebagai Hash. Untuk menghasilkan id unik, Anda dapat menggunakan perintah kenaikan atom. Sesuatu seperti ini -
Menangani Suara
Sekarang, setiap kali seseorang menjawab pertanyaan atau jawaban, Anda hanya perlu melakukan ini
Daftar Pertanyaan untuk Beranda
Selanjutnya, kami ingin menyimpan pertanyaan terbaru untuk ditampilkan di beranda. Jika Anda menulis program .NET atau Java, Anda akan menyimpan pertanyaan dalam Daftar. Ternyata, itu adalah cara terbaik untuk menyimpan ini di Redis juga.
Setiap kali seseorang mengajukan pertanyaan, kami menambahkan idnya ke daftar.
Sekarang, ketika Anda ingin merender beranda, Anda meminta Redis untuk 25 pertanyaan terbaru.
Sekarang setelah Anda memiliki id, ambil item dari Redis menggunakan pipelining dan menunjukkannya kepada pengguna.
Pertanyaan dengan Tag, Diurut berdasarkan Pilihan
Selanjutnya, kami ingin mengambil pertanyaan untuk setiap tag. Tetapi SO memungkinkan Anda untuk melihat pertanyaan pilihan teratas, pertanyaan baru atau pertanyaan yang belum terjawab di bawah setiap tag.
Untuk memodelkan ini, kami menggunakan fitur Set Diurutkan Redis. Set Diurutkan memungkinkan Anda untuk mengaitkan skor dengan setiap elemen. Anda kemudian dapat mengambil elemen berdasarkan skor mereka.
Ayo maju dan lakukan ini untuk tag Redis
Apa yang kita lakukan di sini? Kami menambahkan pertanyaan ke set yang diurutkan, dan mengaitkan skor (jumlah suara) untuk setiap pertanyaan. Setiap kali pertanyaan dibatalkan, kami akan menambah nilainya. Dan ketika pengguna mengklik "Pertanyaan yang ditandai Redis, disortir berdasarkan suara", kami hanya melakukan
zrevrange
dan mendapatkan kembali pertanyaan teratas.Pertanyaan Waktu Nyata tanpa halaman yang menyegarkan
Dan akhirnya, fitur bonus. Jika Anda membiarkan halaman pertanyaan terbuka, SO akan memberi tahu Anda ketika pertanyaan baru ditambahkan. Bagaimana Redis dapat membantu di sini?
Redis memiliki model pub-sub. Anda dapat membuat saluran, misalnya "channel_questions_tagged_redis". Anda kemudian
subscribe
pengguna ke saluran tertentu. Ketika pertanyaan baru ditambahkan, Anda akanpublish
mengirim pesan ke saluran itu. Semua pengguna akan mendapatkan pesan. Anda harus menggunakan teknologi web seperti soket web atau komet untuk benar-benar mengirimkan pesan ke browser, tetapi Redis membantu Anda dengan semua pipa ledeng di sisi server.Kegigihan, Keandalan, dll.
Tidak seperti Cache, Redis tetap menyimpan data pada hard disk. Anda dapat memiliki pengaturan master-slave untuk memberikan keandalan yang lebih baik. Untuk mempelajari lebih lanjut, buka topik Kegigihan dan Replikasi di sini - http://redis.io/documentation
sumber
Bukan hanya cache.
sumber
Redis memiliki kemampuan unik seperti lua-script ultra-cepat. Waktu pelaksanaannya sama dengan eksekusi perintah C. Ini juga membawa atomicity untuk manipulasi data Redis canggih yang diperlukan untuk mengerjakan banyak objek canggih seperti Locks dan Semaphores.
Ada Redis yang berbasis di grid data memori yang disebut Redisson yang memungkinkan untuk dengan mudah membangun aplikasi terdistribusi di Jawa . Berkat didistribusikan
Lock
,Semaphore
,ReadWriteLock
,CountDownLatch
,ConcurrentMap
objek dan banyak lainnya.Sempurna bekerja di cloud dan mendukung AWS Elasticache , AWS Elasticache Cluster dan dukungan Azure Redis Cache
sumber
Sebenarnya tidak ada ketergantungan antara representasi data relatif (atau semua tipe representasi data) dan peran basis data (cache, kegigihan permanen, dll).
Redis baik untuk cache memang benar, tetapi lebih dari sekadar cache. Basis data berkecepatan tinggi dalam memori penuh. Itu tetap ada data pada disk. Ini bukan relasional, ini penyimpanan nilai kunci.
Kami menggunakannya dalam produksi. Redis membantu kami membangun perangkat lunak yang menangani ribuan permintaan per detik dan menyimpan data bisnis pelanggan selama siklus hidup alami.
sumber
Redis adalah cache yang paling cocok untuk arsitektur lingkungan didistribusikan / Microservice.
Itu cepat, dapat diandalkan, memberikan atomicity dan konsistensi dan memiliki berbagai tipe data seperti set, hash, daftar dll.
Saya menggunakannya dari satu tahun terakhir dan itu benar-benar datang sebagai penyelamat ketika Anda perlu memberikan solusi siap produksi dengan sangat cepat dan untuk setiap masalah terkait kinerja karena Anda selalu dapat menggunakannya untuk menyimpan data.
sumber
Selain sebagai server cache, Redis secara khusus server struktur data. Menjadi cache dalam bentuk server struktur data sangat berarti, karena struktur data adalah dasar program, atau aplikasi . Pertimbangkan Anda menggunakan database SQL sebagai teknologi penyimpanan dan perlu membuat daftar, peta hash, seperangkat peringkat atau hal-hal seperti itu, agak sakit di leher. Redis dapat menyediakan Anda fungsi-fungsi ini secara langsung dengan cara yang sangat sederhana, sehingga sangat menyederhanakan pengembangan.
Di sisi lain, server struktur data tidak harus dalam bentuk cache. Ada proyek yang kompatibel dengan Redis tetapi memiliki mesin penyimpanan persisten.
sumber
Redis mendukung struktur data seperti string, hashes, daftar, set, set diurutkan dengan rentang pertanyaan, bitmap, hyperloglog, indeks geospasial dengan kueri dan aliran radius. Redis memiliki replikasi bawaan, skrip Lua, penggusuran LRU, transaksi, dan berbagai tingkat kegigihan pada disk, dan menyediakan ketersediaan tinggi melalui Redis Sentinel dan partisi otomatis dengan Redis Cluster.
implementaion dengan python
https://beyondexperiment.com/vijayravichandran06/redis-data-structure-with-python/
sumber