Kasus ElastiCache Penggunaan Umum dan Bagaimana ElastiCache Dapat Membantu - Amazon ElastiCache

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kasus ElastiCache Penggunaan Umum dan Bagaimana ElastiCache Dapat Membantu

Baik ketika menyajikan berita terkini, papan peringkat 10 teratas, katalog produk, maupun menjual tiket suatu acara, kecepatan adalah aspek yang terpenting. Keberhasilan situs web dan bisnis Anda sangat dipengaruhi oleh kecepatan Anda dalam menyediakan konten.

Dalam artikel "For Impatient Web Users, an Eye Blink Is Just Too Long to Wait", New York Times menjelaskan bahwa pengguna dapat merasakan perbedaan 250 milidetik (1/4 detik) di antara beberapa situs yang bersaing. Pengguna cenderung lebih memilih situs yang lebih cepat daripada situs yang lambat. Pengujian yang dilakukan di Amazon, yang dikutip dalam artikel How Webpage Load Time Is Related to Visitor Loss, mengungkapkan bahwa untuk setiap 100 milidetik (1/10 detik) penambahan waktu pemuatan, penjualan turun 1 persen.

Jika seseorang menginginkan data, Anda dapat mengirimkan data tersebut lebih cepat jika disimpan dalam cache. Hal tersebut berlaku baik untuk halaman web maupun laporan yang mendorong keputusan bisnis. Apakah bisnis Anda mampu menampilkan halaman web Anda dengan latensi yang sesingkat mungkin tanpa menyimpannya dalam cache?

Tanpa perlu dipikir lagi, Anda pasti ingin meng-cache item Anda yang paling banyak diminta. Namun, mengapa tidak meng-cache item yang kurang sering diminta? Bahkan kueri database yang paling dioptimalkan atau API panggilan jarak jauh terasa lebih lambat daripada mengambil kunci datar dari cache dalam memori. Pemuatan yang terasa lebih lambat cenderung membuat pelanggan beralih ke bisnis lain.

Contoh berikut menggambarkan beberapa cara penggunaan ElastiCache dapat meningkatkan kinerja keseluruhan aplikasi Anda.

Penyimpanan Data Dalam Memori

Tujuan utama dari penyimpanan nilai-kunci dalam memori adalah untuk menyediakan akses ultracepat (latensi submilidetik) dan murah ke salinan data. Kebanyakan penyimpanan data memiliki area data yang sering diakses namun jarang diperbarui. Selain itu, kueri basis data selalu lebih lambat dan menghabiskan lebih banyak daya komputasi daripada menemukan kunci dalam cache pasangan nilai kunci. Beberapa kueri basis data menghabiskan sangat banyak daya komputasi untuk dijalankan. Contohnya adalah kueri yang memerlukan operasi join terhadap beberapa tabel atau kueri dengan penghitungan intensif. Dengan meng-cache hasil kueri tersebut, Anda membayar harga kueri hanya sekali. Kemudian, Anda dapat dengan cepat mengambil data beberapa kali tanpa harus menjalankan kembali kueri tersebut.

Apa yang Harus Saya Simpan dalam Cache?

Saat menentukan data apa yang harus di-cache, pertimbangkan beberapa faktor ini:

Kecepatan dan biaya – Selalu akan lebih lambat dan lebih mahal untuk mendapatkan data dari basis data dibandingkan dari cache. Beberapa kueri basis data secara inheren lebih lambat dan lebih mahal daripada yang lain. Misalnya, kueri yang melakukan operasi join terhadap beberapa tabel akan jauh lebih lambat dan lebih mahal daripada kueri tabel tunggal sederhana. Jika data yang diperlukan hanya dapat diperoleh menggunakan kueri yang lambat dan mahal, berarti data ini kemungkinan cocok untuk caching. Jika data dapat diambil dengan kueri yang relatif cepat dan sederhana, data tersebut mungkin masih dapat menjadi kandidat untuk caching, tergantung pada beberapa faktor lainnya.

Data dan pola akses – Untuk menentukan apa yang perlu di-cache, diperlukan juga pemahaman terhadap data itu sendiri dan pola aksesnya. Misalnya, tidak masuk akal untuk meng-cache data yang berubah dengan cepat atau jarang diakses. Agar proses cache menyediakan manfaat nyata, data harus relatif statis dan sering diakses. Contohnya adalah profil pribadi di situs media sosial. Di sisi lain, Anda tidak ingin meng-cache data jika caching tidak menyediakan kecepatan atau keuntungan biaya. Misalnya, tidak masuk akal untuk meng-cache halaman web yang menampilkan hasil pencarian karena kueri dan hasilnya biasanya unik.

Staleness – Menurut definisi, data yang di-cache adalah data usang (stale). Meskipun dalam keadaan tertentu data tidak usang, namun data ini harus selalu dianggap dan diperlakukan sebagai data usang. Untuk mengetahui apakah data Anda adalah kandidat untuk caching, tentukan toleransi aplikasi Anda untuk data usang.

Aplikasi Anda mungkin dapat menoleransi data usang dalam satu konteks, tetapi tidak untuk yang lain. Misalnya, anggaplah situs Anda menyajikan harga saham yang diperdagangkan secara publik. Pelanggan Anda mungkin bisa menerima beberapa data usang jika diberi klarifikasi bahwa data harga mungkin tertunda n menit. Namun, jika Anda menyajikan harga saham tersebut kepada pialang saham yang melakukan penjualan atau pembelian, maka Anda menginginkan data waktu nyata.

Pertimbangkan untuk meng-cache data Anda jika hal berikut ini berlaku:

  • Data Anda lambat atau mahal untuk diperoleh jika dibandingkan dengan pengambilan dari cache.

  • Pengguna sering mengakses data Anda.

  • Data Anda tetap relatif sama, atau jika data berubah dengan cepat, "staleness" bukanlah masalah besar.

Untuk informasi selengkapnya, silakan lihat Strategi cache untuk Memcached

Papan Peringkat Permainan

Dengan set yang OSS diurutkan Valkey atau Redis, Anda dapat memindahkan kompleksitas komputasi papan peringkat dari aplikasi Anda ke cluster Anda.

Papan peringkat, seperti 10 skor teratas untuk sebuah game memiliki komputasi yang rumit. Hal ini terutama terjadi jika ada banyak pemain sekaligus dan skor terus berubah. Set yang OSS diurutkan Valkey dan Redis menjamin keunikan dan urutan elemen. Dengan set yang diurutkan, setiap kali elemen baru ditambahkan ke set yang diurutkan, itu di-reanked secara real time. Elemen tersebut kemudian ditambahkan ke set dalam urutan numerik yang benar.

Dalam diagram berikut, Anda dapat melihat cara kerja papan peringkat ElastiCache game.

Gambar: ElastiCache Diagram papan peringkat game
contoh Papan Peringkat Valkey atau Redis OSS

Dalam contoh ini, empat pemain game dan skor mereka dimasukkan ke dalam daftar berurut menggunakan ZADD. Perintah ZREVRANGEBYSCORE mengurutkan pemain sesuai skor mereka, dari tinggi ke rendah. Selanjutnya, ZADD digunakan untuk memperbarui skor milik June dengan menimpa entri yang sudah ada. Terakhir, ZREVRANGEBYSCORE mengurutkan pemain sesuai skor mereka, dari tinggi ke rendah. Daftar ini menunjukkan bahwa June telah naik dalam peringkat.

ZADD leaderboard 132 Robert ZADD leaderboard 231 Sandra ZADD leaderboard 32 June ZADD leaderboard 381 Adam ZREVRANGEBYSCORE leaderboard +inf -inf 1) Adam 2) Sandra 3) Robert 4) June ZADD leaderboard 232 June ZREVRANGEBYSCORE leaderboard +inf -inf 1) Adam 2) June 3) Sandra 4) Robert

Perintah berikut menunjukkan peringkat June di antara semua pemain. Karena peringkat berbasis nol, ZREVRANKmengembalikan 1 untuk Juni, yang berada di posisi kedua.

ZREVRANK leaderboard June 1

Untuk informasi selengkapnya, lihat dokumentasi Valkey tentang set yang diurutkan.

Pesan (Pub/Sub)

Ketika Anda mengirim pesan email, Anda mengirimkannya ke satu atau beberapa penerima tertentu. Dalam paradigma OSS pub/sub Valkey dan Redis, Anda mengirim pesan ke saluran tertentu yang tidak tahu siapa, jika ada, yang menerimanya. Orang-orang yang mendapatkan pesan adalah mereka yang berlangganan saluran tersebut. Misalnya, anggaplah Anda berlangganan saluran news.sports.golf. Anda dan semua orang yang berlangganan saluran news.sports.golf mendapatkan semua pesan yang dipublikasikan ke news.sports.golf.

Fungsionalitas PUB/sub tidak ada hubungannya dengan ruang kunci apa pun. Oleh karena itu, fungsi ini sama sekali tidak memberikan pengaruh. Dalam diagram berikut, Anda dapat menemukan ilustrasi ElastiCache pesan dengan Valkey dan Redis. OSS

Gambar: diagram ElastiCache pesan

Berlangganan

Untuk menerima pesan pada saluran, Anda berlangganan saluran tersebut. Anda dapat berlangganan satu saluran, beberapa saluran tertentu, atau semua saluran yang sesuai dengan pola. Untuk membatalkan langganan, Anda berhenti berlangganan dari saluran yang ditentukan saat Anda berlangganan. Atau, jika berlangganan menggunakan pencocokan pola, Anda berhenti berlangganan menggunakan pola yang sama seperti yang Anda gunakan sebelumnya.

contoh - Langganan ke Satu Saluran

Untuk berlangganan satu saluran, gunakan SUBSCRIBE perintah yang menentukan saluran yang ingin Anda berlangganan. Pada contoh berikut, klien berlangganan saluran news.sports.golf.

SUBSCRIBE news.sports.golf

Setelah beberapa saat, klien membatalkan langganan mereka ke saluran menggunakan UNSUBSCRIBE perintah yang menentukan saluran untuk berhenti berlangganan.

UNSUBSCRIBE news.sports.golf
contoh - Berlangganan ke Beberapa Saluran Tertentu

Untuk berlangganan beberapa saluran tertentu, daftarkan saluran dengan SUBSCRIBE perintah. Pada contoh berikut, klien berlangganan saluran news.sports.golf, news.sports.soccer, dan news.sports.skiing.

SUBSCRIBE news.sports.golf news.sports.soccer news.sports.skiing

Untuk membatalkan langganan ke saluran tertentu, gunakan UNSUBSCRIBE perintah dan tentukan saluran untuk berhenti berlangganan.

UNSUBSCRIBE news.sports.golf

Untuk membatalkan langganan ke beberapa saluran, gunakan UNSUBSCRIBE perintah dan tentukan saluran untuk berhenti berlangganan.

UNSUBSCRIBE news.sports.golf news.sports.soccer

Untuk membatalkan semua langganan, gunakan UNSUBSCRIBE dan tentukan setiap saluran. Atau gunakan UNSUBSCRIBE dan jangan menentukan saluran.

UNSUBSCRIBE news.sports.golf news.sports.soccer news.sports.skiing

atau

UNSUBSCRIBE
contoh - Langganan Menggunakan Pencocokan Pola

Klien dapat berlangganan ke semua saluran yang cocok dengan pola dengan menggunakan PSUBSCRIBE perintah.

Pada contoh berikut, klien berlangganan semua saluran olahraga. Anda tidak menampilkan daftar semua saluran olahraga satu per satu, seperti yang Anda gunakan dengan SUBSCRIBE. Namun, dengan perintah PSUBSCRIBE Anda menggunakan pencocokan pola.

PSUBSCRIBE news.sports.*
contoh Membatalkan Langganan

Untuk membatalkan langganan ke saluran tersebut, gunakan perintah PUNSUBSCRIBE.

PUNSUBSCRIBE news.sports.*
penting

String saluran yang dikirim ke SUBSCRIBE perintah [P] dan ke UNSUBSCRIBE perintah [P] harus cocok. Anda tidak dapat menjalankan PSUBSCRIBE ke news.* dan PUNSUBSCRIBE dari news.sports.* atau UNSUBSCRIBE dari news.sports.golf.

Publikasi

Untuk mengirim pesan ke semua pelanggan saluran, gunakan perintah PUBLISH, dengan menentukan saluran dan pesan. Contoh berikut memublikasikan pesan, "It’s Saturday and sunny. I’m headed to the links." ke saluran news.sports.golf.

PUBLISH news.sports.golf "It's Saturday and sunny. I'm headed to the links."

Klien tidak dapat mempublikasikan ke saluran yang berlangganan.

Untuk informasi selengkapnya, lihat Pub/Sub di dokumentasi Valkey.

Data Rekomendasi (Hash)

Menggunakan INCR atau DECR di Valkey atau Redis OSS membuat rekomendasi kompilasi menjadi sederhana. Setiap kali pengguna "menyukai" produk, Anda menaikkan nilai penghitung item:productID:like. Setiap kali pengguna "tidak menyukai" produk, Anda menaikkan nilai penghitung item:productID:dislike. Menggunakan hash, Anda juga dapat mempertahankan daftar semua orang yang menyukai atau tidak menyukai suatu produk.

contoh - Suka dan Tidak Suka
INCR item:38923:likes HSET item:38923:ratings Susan 1 INCR item:38923:dislikes HSET item:38923:ratings Tommy -1

ElastiCache Testimonial Pelanggan

Untuk mempelajari cara bisnis seperti Airbnb, EsriPBS, dan lainnya menggunakan Amazon ElastiCache untuk mengembangkan bisnis mereka dengan pengalaman pelanggan yang lebih baik, lihat Cara Orang Lain Menggunakan Amazon ElastiCache.

Anda juga dapat menonton video Tutorial untuk kasus penggunaan ElastiCache pelanggan tambahan.