|
Mengembangkan aplikasi dengan Redis adalah proses yang menyenangkan, tetapi seperti teknologi apa pun, ada beberapa hal yang perlu Anda ingat saat mendesain aplikasi berbasis Redis. Anda mungkin sudah terbiasa dengan seluruh rutinitas pengembangan database relasional sebelumnya, dan pengembangan aplikasi berbasis Redis memiliki banyak kesamaan, tetapi Anda harus mengingat dua hal berikut - Redis adalah database dalam memori dan berutas tunggal. Oleh karena itu, saat menggunakan Redis, Anda perlu memperhatikan poin-poin berikut: 1. Kontrol semua kunci yang disimpan di Redis Fungsi utama database adalah untuk menyimpan data, tetapi adalah normal bagi pengembang untuk mengabaikan beberapa data yang disimpan dalam database karena perubahan persyaratan aplikasi atau metode penggunaan data, dan hal yang sama berlaku di Redis. Anda mungkin mengabaikan kunci tertentu yang kedaluwarsa, atau Anda mungkin lupa data karena modul aplikasi Anda tidak digunakan lagi. Dalam kedua kasus tersebut, Redis menyimpan beberapa data yang tidak lagi digunakan, memakan ruang tanpa alasan. Pola data Redis yang terstruktur lemah membuatnya sulit untuk mengetahui apa yang disimpan secara terpusat kecuali Anda menggunakan nomenklatur yang sangat matang untuk kunci. Menggunakan metode penamaan yang tepat akan menyederhanakan manajemen database Anda, dan saat Anda membuat namespace untuk kunci melalui aplikasi atau layanan Anda (biasanya menggunakan titik dua untuk membagi nama kunci), Anda dapat dengan mudah mengidentifikasi data saat memigrasikan, mengonversi, atau menghapusnya. Kasus penggunaan umum lainnya untuk Redis adalah sebagai penyimpanan data kedua untuk item data panas, di mana sebagian besar data disimpan di database lain, seperti PostgreSQL atau MongoDB. Dalam kasus penggunaan ini, pengembang sering lupa menghapus data yang sesuai di Redis saat data dihapus dari penyimpanan utama. Dalam hal ini, penghapusan kaskade biasanya diperlukan, dalam hal ini dapat dicapai dengan menyimpan semua pengidentifikasi untuk item data tertentu dalam konfigurasi Redis, untuk memastikan bahwa setelah data dihapus di database utama, pembersih dipanggil untuk menghapus semua salinan dan informasi yang relevan. 2. Kontrol panjang semua nama kunci Seperti yang kami katakan di atas, kami menggunakan konvensi penamaan yang sesuai dan menambahkan awalan untuk mengidentifikasi ke mana arah data, jadi ini tampaknya bertentangan dengan itu. Namun, jangan lupa bahwa Redis adalah database dalam memori, dan semakin pendek kuncinya, semakin sedikit ruang yang Anda butuhkan. Secara alami, ketika ada jutaan atau miliaran kunci dalam database, panjang nama kunci akan berdampak besar. Misalnya, pada server Redis 32-bit, jika Anda menyimpan satu juta kunci dengan panjang 32 karakter, itu akan menghabiskan sekitar 96MB ruang saat menggunakan nama kunci 6 karakter, tetapi jika Anda menggunakan nama kunci 12 karakter, konsumsi ruang akan meningkat menjadi sekitar 111MB. Dengan lebih banyak kunci, tambahan 15% overhead akan berdampak signifikan. 3. Gunakan struktur data yang tepat Baik itu penggunaan memori atau kinerja, terkadang struktur data dapat berdampak besar, berikut adalah beberapa praktik terbaik untuk dirujuk: Alih-alih menyimpan data sebagai ribuan (atau jutaan) string terpisah, pertimbangkan untuk menggunakan struktur data hash untuk mengelompokkan data terkait. Tabel hash sangat efisien dan dapat mengurangi penggunaan memori Anda; Pada saat yang sama, hashing juga lebih bermanfaat untuk abstraksi detail dan keterbacaan kode. Jika sesuai, gunakan daftar alih-alih atur. Jika Anda tidak perlu menggunakan fitur set, List dapat memberikan kecepatan yang lebih cepat dari yang ditetapkan sambil menggunakan lebih sedikit memori. Set yang diurutkan adalah struktur data yang paling mahal, baik dalam hal konsumsi memori maupun kompleksitas operasi dasar. Jika Anda hanya memerlukan cara untuk mengkueri catatan dan tidak peduli tentang pengurutan properti tersebut, maka sangat disarankan untuk menggunakan tabel hash. Fitur yang sering diabaikan di Redis adalah bitmap atau bitset (setelah V2.2). Bitset memungkinkan Anda melakukan beberapa operasi tingkat bit pada nilai Redis, seperti beberapa analisis ringan. 4. Jangan gunakan kunci saat menggunakan SCAN Pada Redis v2.8, perintah SCAN sudah tersedia, yang memungkinkan kunci diambil dari ruang kunci menggunakan kursor. Dibandingkan dengan perintah KEYS, meskipun SCAN tidak dapat mengembalikan semua hasil yang cocok sekaligus, SCAN menghindari risiko tinggi memblokir sistem, sehingga beberapa operasi dapat dijalankan pada node master. Penting untuk dicatat bahwa perintah SCAN adalah iterator berbasis kursor. Setiap kali perintah SCAN dipanggil, kursor baru akan dikembalikan ke pengguna, dan pengguna perlu menggunakan kursor baru ini sebagai parameter kursor perintah SCAN dalam iterasi berikutnya, untuk melanjutkan proses iterasi sebelumnya. Pada saat yang sama, dengan SCAN, pengguna juga dapat menyesuaikan perintah menggunakan mode nama kunci dan opsi hitungan. Perintah terkait SCAN juga mencakup perintah SSSCAN, perintah HSCAN, dan perintah ZSCAN, yang masing-masing digunakan untuk koleksi, kunci hash, dan sekuel. 5. Gunakan skrip Lua sisi server Dalam proses menggunakan Redis, dukungan skrip Lua tidak diragukan lagi memberikan lingkungan pengembangan yang sangat ramah kepada pengembang, sehingga sangat membebaskan kreativitas pengguna. Jika digunakan dengan benar, skrip Lua dapat membawa peningkatan yang signifikan dalam kinerja dan konsumsi sumber daya. Alih-alih meneruskan data ke CPU, skrip memungkinkan Anda menjalankan logika yang paling dekat dengan data, mengurangi latensi jaringan dan transfer data yang berlebihan. Di Redis, kasus penggunaan yang sangat klasik untuk Lua adalah pemfilteran data atau agregasi data ke dalam aplikasi. Dengan merangkum alur kerja pemrosesan ke dalam skrip, Anda cukup memanggilnya untuk mendapatkan jawaban yang lebih kecil menggunakan beberapa sumber daya dalam waktu yang lebih singkat. Kiat pro:Lua bagus, tetapi juga memiliki beberapa masalah, seperti kesulitan melaporkan dan menangani bug. Pendekatan cerdas adalah menggunakan fitur Pub/Sub Redis dan membiarkan skrip mendorong pesan log melalui saluran khusus. Kemudian buat proses pelanggan dan proses sesuai dengan itu.
|