Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Backoff eksponensial adalah strategi penanganan error standar
untuk aplikasi jaringan, yang mana klien secara berkala mencoba ulang
permintaan yang gagal dengan penundaan yang meningkat di antara permintaan. Klien harus menggunakan
backoff eksponensial untuk semua permintaan ke Memorystore for Redis yang menampilkan
error kode respons HTTP 5xx dan 429.
Memahami cara kerja backoff eksponensial sangatlah penting jika Anda:
Mem-build aplikasi klien yang menggunakan REST API
Memorystore for Redis secara langsung.
Jika Anda menggunakan konsolGoogle Cloud , konsol akan mengirim permintaan ke Memorystore untuk Redis atas nama Anda dan menangani penundaan yang diperlukan.
Contoh algoritma
Algoritma backoff eksponensial mencoba ulang permintaan secara eksponensial,
sehingga meningkatkan waktu tunggu antar-percobaan ulang hingga waktu backoff maksimum. Contohnya
adalah:
Buat permintaan ke Memorystore for Redis.
Jika permintaan gagal, tunggu 1 + random_number_milliseconds detik dan coba lagi
permintaan tersebut.
Jika permintaan gagal, tunggu 2 + random_number_milliseconds detik dan coba lagi
permintaan tersebut.
Jika permintaan gagal, tunggu 4 + random_number_milliseconds detik dan coba lagi
permintaan tersebut.
Dan seterusnya, hingga waktu maximum_backoff.
Terus tunggu dan coba ulang hingga jumlah maksimum percobaan ulang, tetapi
jangan tambah waktu tunggu antar-percobaan ulang.
dengan:
Waktu tunggu adalah min(((2^n)+random_number_milliseconds), maximum_backoff),
dengan n bertambah 1 untuk setiap iterasi (permintaan).
random_number_milliseconds adalah jumlah acak milidetik yang kurang dari atau
sama dengan 1.000. Hal ini membantu menghindari kasus saat banyak klien disinkronkan oleh
beberapa situasi dan semua mencoba lagi sekaligus, sehingga mengirimkan permintaan dalam
gelombang yang disinkronkan. Nilai random_number_milliseconds harus dihitung ulang setelah
setiap permintaan percobaan ulang.
maximum_backoff biasanya 32 atau 64 detik. Nilai yang sesuai
bergantung pada kasus penggunaan.
Anda dapat terus mencoba ulang setelah mencapai waktu maximum_backoff.
Percobaan ulang setelah tahap ini tidak perlu terus meningkatkan waktu backoff. Misalnya, jika klien menggunakan waktu maximum_backoff 64 detik, setelah
mencapai nilai ini, klien dapat mencoba lagi setiap 64 detik. Pada saat tertentu,
klien seharusnya dicegah untuk mencoba ulang tanpa batas waktu.
Backoff maksimum dan jumlah maksimum percobaan ulang yang digunakan klien
bergantung pada kasus penggunaan dan kondisi jaringan. Misalnya, klien
seluler aplikasi mungkin perlu mencoba lagi lebih sering dan untuk interval yang lebih lama
jika dibandingkan dengan klien desktop aplikasi yang sama.
Jika permintaan percobaan ulang gagal setelah melebihi jumlah maksimum percobaan ulang, laporkan atau catat error menggunakan salah satu metode yang tercantum di bagian Mendapatkan dukungan.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-19 UTC."],[],[],null,["# Exponential backoff\n\n[Exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff) is a standard error handling\nstrategy for network applications in which a client periodically retries a\nfailed request with increasing delays between requests. Clients should use\nexponential backoff for all requests to Memorystore for Redis that return\nHTTP `5xx` and `429` response code errors.\n\nUnderstanding how exponential backoff works is important if you are:\n\n- Building client applications that use the Memorystore for Redis [REST API](/memorystore/docs/redis/reference/rest)\n directly.\n\n- Accessing Memorystore for Redis through a [client library](/memorystore/docs/redis/libraries).\n Note that some client libraries, such as the [Memorystore for Redis Client Library for Node.js](https://googleapis.dev/nodejs/redis/latest/index.html),\n have built-in exponential backoff.\n\nIf you are using the [Google Cloud console](https://console.cloud.google.com/), the console sends\nrequests to Memorystore for Redis on your behalf and handles any necessary\nbackoff.\n\nExample algorithm\n-----------------\n\nAn exponential backoff algorithm retries requests exponentially,\nincreasing the waiting time between retries up to a maximum backoff time. An\nexample is:\n\n1. Make a request to Memorystore for Redis.\n\n2. If the request fails, wait 1 + `random_number_milliseconds` seconds and retry\n the request.\n\n3. If the request fails, wait 2 + `random_number_milliseconds` seconds and retry\n the request.\n\n4. If the request fails, wait 4 + `random_number_milliseconds` seconds and retry\n the request.\n\n5. And so on, up to a `maximum_backoff` time.\n\n6. Continue waiting and retrying up to some maximum number of retries, but\n do not increase the wait period between retries.\n\nwhere:\n\n- The wait time is min(((2\\^`n`)+`random_number_milliseconds`), `maximum_backoff`),\n with `n` incremented by 1 for each iteration (request).\n\n- `random_number_milliseconds` is a random number of milliseconds less than or\n equal to 1000. This helps to avoid cases where many clients get synchronized by\n some situation and all retry at once, sending requests in synchronized\n waves. The value of `random_number_milliseconds` should be recalculated after\n each retry request.\n\n- `maximum_backoff` is typically 32 or 64 seconds. The appropriate value\n depends on the use case.\n\nIt's okay to continue retrying once you reach the `maximum_backoff` time.\nRetries after this point do not need to continue increasing backoff time. For\nexample, if a client uses an `maximum_backoff` time of 64 seconds, then after\nreaching this value, the client can retry every 64 seconds. At some point,\nclients should be prevented from retrying infinitely.\n\nThe maximum backoff and maximum number of retries that a client uses\ndepends on the use case and network conditions. For example, mobile\nclients of an application may need to retry more times and for longer intervals\nwhen compared to desktop clients of the same application.\n\nIf the retry requests fail after exceeding the maximum number of retries, report\nor log an error using one of the methods listed under [Getting support](/memorystore/docs/redis/getting-support)."]]