Apa yang harus dipikirkan saat mendesain aplikasi NoSQL Redis
1) Untuk mengembangkan dengan benar di Redis, Anda harus lebih memikirkan bagaimana Anda akan menyusun hubungan dalam program C# Anda yaitu dengan kelas koleksi C# daripada Model Relasional yang dimaksudkan untuk RDBMS. Pola pikir yang lebih baik adalah lebih memikirkan penyimpanan data seperti database Dokumen daripada tabel RDBMS. Pada dasarnya semuanya akan digumpalkan di Redis melalui kunci (indeks) sehingga Anda hanya perlu mencari tahu apa entitas utama Anda (yaitu akar agregat) yang akan disimpan di 'ruang nama kunci' sendiri atau apakah itu entitas non-primer, yaitu hanya metadata yang seharusnya dipertahankan dengan entitas induknya.
Contoh Redis sebagai Penyimpanan Data utama
Berikut adalah artikel bagus yang menjelaskan cara membuat aplikasi blog sederhana menggunakan Redis:
http://www.servicestack.net/docs/redis-client/designing-nosql-database
Anda juga dapat melihat kode sumber RedisStackOverflow untuk contoh dunia nyata lainnya menggunakan Redis.
Pada dasarnya Anda perlu menyimpan dan mengambil item dari setiap jenis secara terpisah.
var redisUsers = redis.As<User>();
var user = redisUsers.GetById(1);
var userIsWatching = redisUsers.GetRelatedEntities<Watching>(user.Id);
Cara Anda menyimpan hubungan antar entitas adalah memanfaatkan Set Redis, misalnya:Anda dapat menyimpan hubungan Pengguna/Pengamat secara konseptual dengan:
SET["ids:User>Watcher:{UserId}"] = [{watcherId1},{watcherId2},...]
Redis tanpa skema dan idempoten
Menyimpan id ke dalam set redis adalah idempoten yaitu Anda dapat menambahkan watcherId1 ke set yang sama beberapa kali dan hanya akan memiliki satu kemunculannya. Ini bagus karena itu berarti Anda tidak perlu memeriksa keberadaan hubungan dan dapat dengan bebas terus menambahkan id terkait seperti tidak pernah ada.
Terkait:menulis atau membaca ke koleksi Redis (mis. Daftar) yang tidak ada sama dengan menulis ke koleksi kosong, yaitu. Daftar dibuat dengan cepat saat Anda menambahkan item ke daftar saat mengakses non- daftar yang ada hanya akan mengembalikan 0 hasil. Ini adalah kemenangan yang bebas gesekan dan produktivitas karena Anda tidak perlu mendefinisikan skema Anda terlebih dahulu untuk menggunakannya. Meskipun jika Anda perlu Redis menyediakan operasi EXISTS untuk menentukan apakah kunci ada atau operasi TYPE sehingga Anda dapat menentukan jenisnya.
Buat hubungan/indeks Anda pada tulisan Anda
Satu hal yang perlu diingat adalah karena tidak ada indeks implisit di Redis, Anda biasanya perlu mengatur indeks/hubungan yang diperlukan untuk membaca diri Anda sendiri selama menulis. Pada dasarnya Anda perlu memikirkan semua persyaratan kueri Anda di muka dan memastikan Anda mengatur hubungan yang diperlukan pada waktu penulisan. Kode sumber RedisStackOverflow di atas adalah contoh bagus yang menunjukkan hal ini.
Catatan:penyedia ServiceStack.Redis C# mengasumsikan Anda memiliki bidang unik yang disebut Id itu adalah kunci utamanya. Anda dapat mengonfigurasinya untuk menggunakan bidang yang berbeda dengan ModelConfig.Id() pemetaan konfigurasi.
Kegigihan Redis
2) Redis mendukung 2 jenis mode persistensi out-of-the-box RDB dan Append Only File (AOF). RDB menulis snapshot rutin sementara Append Only File bertindak seperti jurnal transaksi yang merekam semua perubahan di antara snapshot - saya sarankan menambahkan keduanya sampai Anda merasa nyaman dengan apa yang dilakukan masing-masing dan apa yang dibutuhkan aplikasi Anda. Anda dapat membaca semua ketekunan Redis di http://redis.io/topics/persistence.
Catatan Redis juga mendukung replikasi sepele yang dapat Anda baca lebih lanjut di:http://redis.io/topics/replication
Redis menyukai RAM
3) Karena Redis beroperasi terutama di memori, sumber daya yang paling penting adalah Anda memiliki cukup RAM untuk menampung seluruh dataset Anda di memori + buffer ketika snapshot ke disk. Redis sangat efisien sehingga instans AWS kecil pun dapat menangani banyak beban - yang ingin Anda cari adalah memiliki RAM yang cukup.
Memvisualisasikan data Anda dengan Redis Admin UI
Terakhir, jika Anda menggunakan ServiceStack C# Redis Client, saya sarankan menginstal Redis Admin UI yang memberikan tampilan visual yang bagus dari entitas Anda. Anda dapat melihat demo langsungnya di:http://servicestack.net/RedisAdminUI/AjaxClient/