Redis
Penyimpanan data di dalam memori yang cepat dengan sumber terbuka untuk digunakan sebagai database, cache, perantara pesan, dan antrean.
Apa itu Redis?
Redis, yang merupakan singkatan dari Remote Dictionary Server, adalah penyimpanan data nilai-kunci, sumber terbuka, dan dalam memori yang cepat. Proyek ini dimulai ketika Salvatore Sanfilippo, yang merupakan developer awal Redis, mencoba meningkatkan skalabilitas perusahaan rintisan Italia miliknya. Dari sana, ia mengembangkan Redis, yang sekarang digunakan sebagai basis data, cache, broker pesan, dan antrean.
Redis memberikan respons waktu di bawah satu milidetik yang memungkinkan jutaan permintaan per detik untuk aplikasi waktu nyata pada industri seperti gaming, teknologi iklan, layanan finansial, pemeliharaan kesehatan, dan IoT. Saat ini, Redis adalah salah satu mesin sumber terbuka yang paling populer, dijuluki sebagai basis data "Paling Dicintai" oleh Stack Overflow selama lima tahun berturut-turut. Karena kecepatan performanya, Redis menjadi pilihan populer untuk caching, manajemen sesi, gaming, papan peringkat, analitik waktu nyata, geospasial, ride-hailing, obrolan/olahpesan, streaming media, dan aplikasi pub/sub.
AWS menawarkan dua layanan terkelola penuh untuk menjalankan Redis. Amazon MemoryDB for Redis adalah layanan basis data dalam memori yang kompatibel dengan Redis, tahan lama, yang memberikan performa sangat cepat. Amazon ElastiCache for Redis adalah layanan caching terkelola penuh yang mempercepat akses data dari basis data primer dan penyimpanan data dengan latensi mikrodetik. Selain itu, ElastiCache juga menawarkan dukungan untuk Memcached, mesin caching sumber terbuka populer lainnya.
Selengkapnya tentang turbocharging aplikasi Anda dengan Amazon ElastiCache for Redis, lihat pembicaraan teknologi online ini.
Manfaat Redis
Performa
Semua data Redis berada di memori, yang memungkinkan latensi rendah dan akses data throughput tinggi. Tidak seperti basis data tradisional, penyimpanan data dalam memori tidak memerlukan perjalanan ke disk, sehingga mengurangi latensi mesin ke mikrodetik. Karena itu, penyimpanan data dalam memori dapat mendukung operasi yang lebih besar dan waktu respons yang lebih cepat. Hasilnya adalah performa yang sangat cepat dengan rata-rata operasi baca dan tulis yang memakan waktu kurang dari satu milidetik dan dukungan untuk jutaan operasi per detik.
Struktur data fleksibel
Tidak seperti penyimpanan data nilai-kunci lainnya yang menawarkan struktur data terbatas, Redis memiliki berbagai macam struktur data untuk memenuhi kebutuhan aplikasi Anda. Tipe data Redis mencakup:
- String – data teks atau biner hingga berukuran 512 MB
- List – kumpulan String pada urutan ditambahkan
- Set – kumpulan string yang tidak berurutan dengan kemampuan memotong, menyatukan, dan membedakan tipe Set lain
- Sorted Sets - Set yang diurutkan berdasarkan nilai
- Hash – struktur data untuk menyimpan daftar bidang dan nilai
- Bitmaps – tipe data yang menawarkan operasi tingkat bit
- HyperLogLogs – struktur data probabilistik untuk memperkirakan item unik dalam set data
- Streams - struktur data log antrean Pesan
- Geospatial - entri berbasis bujur/lintang Peta, "terdekat"
- JSON - objek semiterstruktur nested dari nilai bernama yang mendukung angka, string, Boolean, array, dan objek lainnya
Sederhana dan mudah digunakan
Redis memungkinkan Anda untuk menulis kode yang rumit secara tradisional dengan baris yang lebih sedikit dan sederhana. Dengan Redis, Anda menulis lebih sedikit baris kode untuk menyimpan, mengakses, dan menggunakan data di aplikasi Anda. Perbedaannya adalah bahwa developer yang menggunakan Redis dapat menggunakan struktur perintah sederhana yang bertentangan dengan bahasa kueri basis data tradisional. Misalnya, Anda dapat menggunakan struktur data hash Redis untuk memindahkan data ke penyimpanan data hanya dengan satu baris kode. Tugas serupa pada penyimpanan data dengan tanpa struktur data hash akan memerlukan banyak baris kode untuk diubah dari satu format ke format lain. Redis hadir dengan struktur data native dan banyak opsi untuk memanipulasi dan berinteraksi dengan data Anda. Lebih dari seratus klien sumber terbuka tersedia bagi developer Redis. Bahasa yang didukung termasuk Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby R, Go, dan masih banyak lagi.
Replikasi dan persistensi
Redis menggunakan arsitektur replika primer dan mendukung replikasi yang tidak sinkron di mana data dapat direplikasi ke beberapa server. Redis memberikan kinerja baca yang ditingkatkan (karena permintaan dapat dipisah antarserver) dan pemulihan yang lebih cepat di mana server primer mengalami gangguan. Untuk persistensi, Redis mendukung cadangan titik waktu (menyalin set data Redis ke disk).
Redis tidak dibuat untuk menjadi basis data yang tahan lama dan konsisten. Jika Anda membutuhkan basis data yang tahan lama dan kompatibel dengan Redis, pertimbangkan menggunakan Amazon MemoryDB for Redis. Karena MemoryDB menggunakan log transaksional tahan lama yang menyimpan data di beberapa Availability Zone (AZ), Anda dapat menggunakannya sebagai basis data primer. MemoryDB dibuat khusus untuk memungkinkan developer menggunakan Redis API tanpa khawatir mengelola cache terpisah,basis data, atau infrastruktur yang mendasarinya.
Ketersediaan dan skalabilitas yang sangat baik
Redis menawarkan arsitektur replika primer pada node tunggal primer atau topologi klaster. Ini memungkinkan Anda untuk membuat solusi yang tersedia sangat baik, memberikan kinerja dan keandalan yang konsisten. Apabila Anda ingin menyesuaikan ukuran klaster, berbagai opsi untuk menaikkan, dan memasukkan atau mengeluarkan skala juga tersedia. Hal ini memungkinkan klaster Anda untuk berkembang sesuai permintaan Anda.
Sumber Terbuka
Redis adalah proyek sumber terbuka yang didukung oleh komunitas yang dinamis, termasuk AWS. Tidak ada penguncian oleh vendor atau teknologi karena Redis berbasis standar terbuka, mendukung format data terbuka, dan menampilkan banyak sekali set klien.
Kasus Penggunaan Redis yang Populer
Caching
Redis adalah pilihan tepat untuk mengimplementasikan cache dalam memori yang tersedia sangat baik untuk mengurangi latensi akses data, meningkatkan throughput, dan memudahkan muatan dari database dan aplikasi NoSQL atau relasional. Redis dapat melayani item yang sering diminta pada waktu respons di bawah satu milidetik, dan memungkinkan Anda untuk secara mudah menskalakan muatan yang lebih tinggi tanpa menambah biaya backend yang lebih mahal. Cache hasil kueri database, cache sesi persisten, cache halaman web, dan cache objek yang sering digunakan seperti gambar, file, dan metadata semuanya merupakan contoh populer cache dengan Redis.
Obrolan, perpesanan, dan antrean
Redis mendukung Pub/Sub dengan pencocokan pola dan beragam struktur data seperti list, sorted set, dan hash. Ini memungkinkan Redis untuk mendukung kinerja tinggi ruang obrolan, stream komentar real-time, umpan media sosial, dan komunikasi antarserver. Struktur data Daftar Redis memudahkan untuk mengimplementasikan antrean yang ringan. List menawarkan operasi atomik serta kemampuan pemblokiran, yang membuatnya cocok untuk berbagai aplikasi yang memerlukan perantara pesan atau daftar sirkuler yang andal.
Leaderboard permainan
Redis adalah pilihan populer di antara para pengembang yang ingin membuat leaderboard real-time. Cukup gunakan struktur data Redis Sorted Set, yang memberikan keunikan elemen sementara mempertahankan daftar yang diurutkan menurut skor pengguna. Membuat daftar peringkat secara real-time semudah memperbarui skor pengguna setiap kali berubah. Anda juga dapat menggunakan Sorted Set untuk menangani data urutan waktu menggunakan stempel waktu sebagai skor.
Penyimpanan sesi
Redis sebagai penyimpanan data di dalam memori dengan ketersediaan dan persistensi yang sangat baik adalah pilihan populer di antara para pengembang aplikasi untuk menyimpan dan mengelola data sesi untuk aplikasi skala internet. Redis memberikan latensi, skala, dan resiliensi di bawah satu milidetik yang diperlukan untuk mengelola data sesi seperti profil pengguna, kredensial, status sesi, dan personalisasi pengguna spesifik.
Streaming media yang kaya
Redis menawarkan penyimpanan data di dalam memori yang cepat untuk menyokong dalam kasus penggunaan streaming siaran langsung. Redis dapat digunakan untuk menyimpan metadata tentang profil pengguna dan riwayat tampilan, informasi/token otentikasi untuk jutaan pengguna, dan memanifestasikan file untuk memungkinkan CDN melakukan streaming video ke jutaan pengguna ponsel dan desktop dalam satu waktu.
Geospasial
Redis menawarkan operator dan struktur data di dalam memori yang dibuat sesuai tujuannya untuk mengelola data geospasial secara real-time dengan skala dan kecepatan. Perintah seperti GEOADD, GEODIST, GEORADIUS, dan GEORADIUSBYMEMBER untuk menyimpan, memproses, dan menganalisis data geospasial secara real-time memudahkan dan mempercepat geospasial dengan Redis. Anda dapat menggunakan Redis untuk menambahkan fitur berdasarkan lokasi seperti waktu berkendara, jarak tempuh, dan titik minat ke aplikasi Anda.
Machine Learning
Aplikasi digerakkan data yang modern memerlukan machine learning untuk secara cepat memproses data dengan volume besar, beragam, dan dengan kecepatan serta mengotomatiskan pengambilan keputusan. Untuk kasus penggunaan seperti pendeteksian penipuan dalam permainan dan layanan finansial, taruhan real-time di ad-tech, dan perjodohan pada kencan, serta berbagi menumpang kendaraan, kemampuan untuk memproses data langsung dan mengambil keputusan dalam waktu puluhan milidetik sangatlah penting. Redis memberi Anda penyimpanan data di dalam memori yang cepat untuk membuat, menyiapkan, dan menerapkan model machine learning secara cepat.
Analisis Real-time
Redis dapat digunakan dengan solusi streaming seperti Apache Kafka dan Amazon Kinesis sebagai penyimpanan data di dalam memori untuk mengambil, memproses, dan menganalisis data real-time dengan latensi di bawah satu milidetik. Redis adalah pilihan ideal untuk analisis real-time menggunakan kasus seperti analisis media sosial, penargetan, personalisasi, dan IoT.
Dukungan Bahasa Redis
Redis mendukung sebagian besar bahasa dan protokol pemrograman, termasuk:
Python
Java
PHP
Perl
Go
Ruby
C/C#/C++
JavaScript
Node.js
Redis vs. Memcached
Redis dan Memcached adalah penyimpanan data sumber terbuka di dalam memori. Memcached, yang merupakan layanan cache memori terdistribusi berperforma tinggi, dirancang untuk kemudahan sementara Redis menawarkan serangkaian fitur yang membuatnya efektif untuk berbagai kasus penggunaan. Untuk perbandingan fitur yang mendetail guna membantu Anda membuat keputusan, lihat Redis vs Memcached. Keduanya bekerja dengan basis data relasional atau nilai-kunci untuk meningkatkan performa seperti MySQL, PostgreSQL, Aurora, Oracle, SQL Server, DynamoDB, dan masih banyak lagi.
Menggunakan Redis di AWS
Amazon MemoryDB for Redis
Amazon MemoryDB for Redis adalah layanan basis data dalam memori yang kompatibel dengan Redis dan tahan lama, yang memberikan performa sangat cepat. Ini dibuat khusus untuk aplikasi modern yang diciptakan dengan arsitektur layanan mikro. Amazon MemoryDB menyimpan data yang tahan lama di beberapa Availability Zone (AZ) menggunakan log transaksional Multi-AZ untuk mengaktifkan failover cepat, pemulihan basis data, dan mulai ulang simpul. Dengan Amazon MemoryDB, semua data Anda disimpan dalam memori, yang memungkinkan Anda mencapai latensi baca mikrodetik dan latensi tulis milidetik satu digit serta throughput tinggi.
Selengkapnya tentang Amazon MemoryDB for Redis, lihat dokumentasi MemoryDB.
Amazon ElastiCache for Redis
Amazon ElastiCache for Redis adalah layanan caching terkelola penuh yang memudahkan penyiapan, pengoperasian, dan penskalaan cache di cloud. Dengan ElastiCache for Redis, Anda dapat meningkatkan kecepatan aplikasi dan membuka kunci latensi baca dan tulis mikrodetik dengan menyimpan data dari basis data primer dan penyimpanan data. ElastiCache for Redis menyediakan uji coba gratis dengan AWS Tingkat Gratis.
Sumber daya Redis